繁体   English   中英

ActiveModel :: Serializer不允许我在应用程序/序列化器中加载序列化器

[英]ActiveModel::Serializer not allowing me to load serializer in app/serializers

我在('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有一个通用的公司序列app/serializers/company_serializer 我尝试使用范围解析运算符,例如:

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

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

在此处输入图片说明

AMS 0.10.7 隐式串行器 vs 显式串行器

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

显式方式如下所示:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM