未找到Rails ActiveRecord Serializer

时间:2015-07-01 14:02:30

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 activerecord serialization

我在我的应用程序中设置了一些序列化程序,最近又决定为新功能创建另一个序列化程序。除了模型/属性不同之外,这个与其他几乎完全相同。我不知道为什么,但无论我做什么,Rails似乎都没有发现我的模型有一个序列化器并绕过它。即使我只是添加了一堆应该引发异常的乱码代码,Rails也会提供具有我模型所有属性的JSON响应。我不确定我在这里失踪了什么。我引用this Railscast来看看我是否错过了一步,但就我所知,一切看起来都是正确的。

这是我的app/serializers/job_description_serializer.rb

class JobDescriptionSerializer < ActiveModel::Serializer
    attributes :id,
        :title,
        :role,
        :description,
        :posting_link,
        :company_id,
        :company_name,
        :created_at,
        :updated_at

    def company_name
        object.company.name
    end
end

这是我的jobs_controller.rb。我在没有root: false参数的情况下尝试了这个。

class Admin::JobsController < ApplicationController
    layout 'admin'

    before_action :authenticate_user!
    before_action :authenticate_admin
    def index
        @job_descriptions = JobDescription.all
        @total_count = @job_descriptions.count

        respond_to do |format|
            format.html { render action: 'index' }
            format.json { render json: { jobs: @job_descriptions, total_count: @total_count }, root: false }
        end
    end
end

2 个答案:

答案 0 :(得分:1)

AMS接受meta关键字来显示total_count和任何其他元数据,

format.json { render json: @job_descriptions, meta: { total_count: @total_count } }

答案 1 :(得分:0)

我明白了!我没有像以前那样传递render json:嵌套哈希,而是将{ total_count: @total_count }推入@job_descriptions,如下所示:

format.json { render json: @job_descriptions << { total_count: @total_count }, root: false }

现在完美运作。我认为问题在于你不能像IW那样在嵌套哈希上使用序列化程序,或者你可以,但我不确定如何。