【问题标题】:ActiveModel::Serializer not allowing me to load serializer in app/serializersActiveModel::Serializer 不允许我在应用程序/序列化程序中加载序列化程序
【发布时间】:2018-01-15 20:30:44
【问题描述】:

我在 ('app/controllers/api/v1/companies_controller.rb') 中有以下 api 控制器:

class Api::V1::CompaniesController < ApplicationController
  def index
    companies = Company.all
    render json: companies, serializer: CompanySerializer
  end
end

但上面是在app/serializers/api/v1/company_serializer.rb 中寻找 Api::V1::CompanySerializer。我宁愿在app/serializers/company_serializer 中有一个通用的公司序列化程序。我尝试过使用范围解析运算符,例如:

渲染 json:公司,序列化器:::CompanySerializer

但仍然出现错误。我如何告诉我的控制器明确使用默认序列化程序?我已经看到这个问题https://github.com/rails-api/active_model_serializers/issues/1701,如果这是唯一允许的行为,这似乎是一个奇怪的选择

【问题讨论】:

  • 你试过this评论说什么吗?我使用其他模块嵌套语法和序列化程序(在app/serializers 中被拾取而无需显式指定它。

标签: ruby-on-rails active-model-serializers


【解决方案1】:

AMS 0.10.7 Implicit Serializer vs Explicit Serializer

只要您的序列化程序具有默认名称,您就不需要传递任何序列化程序选项。所以render json: companies 应该可以工作。

显式方式如下:

render json: companies,
  serializer: CollectionSerializer,
  each_serializer: CompanySerializer

注意:集合的默认序列化程序是CollectionSerializer。在您的示例中,您尝试将CompanySerializer 传递给serializer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2014-10-17
    • 2018-05-24
    • 2016-10-03
    • 2018-07-04
    相关资源
    最近更新 更多