2016-05-05 27 views
6

APIにはactive_model_serializer 0.10.0.rc5grape gemが使用されています。ActiveModel :: Serializer :: CollectionSerializer :: NoSerializerError in active_model_serializer 0.10.0.rc5

私はこのようなポストエンドポイントをしました:私は、私は次のエラーを取得するポストエンドポイントにアクセスしようとすると、今

class V1::Serializers::PostSerializer < ActiveModel::Serializer 
    attributes :id, :name, :slug 
end 

class V1::Endpoints::Posts < Grape::API 
    resource :posts do 
    desc 'Returns a list of posts.' 
    # serializing array 
    get '', each_serializer: V1::Serializers::PostSerializer do 
     @posts = Post.all 
     present @posts 
    end 
    end 
end 

私のシリアライザは、次のようになります

ActiveModel::Serializer::CollectionSerializer::NoSerializerError - No serializer found for resource: 

問題のデバッグ中に問題を発見したのはですこの宝石の。私はserializer_class変数がゼロになると思います。

この問題に関連していると思われるほとんどすべてのリンクを試しました。しかし誰も私のために働いていません。

答えて

2

ではなくeach_serializerのシリアライザを使用しよう:

get '', serializer: V1::Serializers::PostSerializer do 

の代わりに:

get '', each_serializer: V1::Serializers::PostSerializer do 
1

私はrender json: @object, serializer: Namespaced::ObjectSerializerのDRYedバージョンを使用して終わりました。

私はこの問題について少し情報を発見したので、私はここで、このアプローチを掲載しました:Correct way to implement API versioning with active_model_serializers

私はそれが役に立てば幸い!

関連する問題