【问题标题】:ActiveModel::Serializer::CollectionSerializer::NoSerializerError in active_model_serializer 0.10.0.rc5ActiveModel::Serializer::CollectionSerializer::NoSerializerError 在 active_model_serializer 0.10.0.rc5
【发布时间】:2016-05-05 15:02:02
【问题描述】:

我将active_model_serializer 0.10.0.rc5grape gem 用于api。

我有一个像这样的 post 端点:

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

我的序列化器看起来像这样:

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

现在,当我尝试访问 post 端点时,出现以下错误:

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

我在调试问题时发现的问题在于这个 gem 的 CollectionSerializer#initialize。我想serializer_class 变量即将为零。

我已经尝试了几乎所有与此问题相关的链接。但没有一个对我有用。

【问题讨论】:

    标签: ruby-on-rails-4 active-model-serializers grape-api


    【解决方案1】:

    尝试使用序列化程序而不是 each_serializer:

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

    代替:

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

    【讨论】:

      【解决方案2】:

      我最终使用了 render json: @object, serializer: Namespaced::ObjectSerializer 的 DRYed 版本。

      由于我几乎没有找到这方面的信息,所以我在这里发布了这种方法:Correct way to implement API versioning with active_model_serializers

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多