ruby-on-rails - 如何将 ActiveModel::Serializer 应用于自定义对象?

标签 ruby-on-rails json ruby-on-rails-4 activemodel active-model-serializers

如果我指定 ActiveModel 对象的简单数组序列化器可以工作:

format.json { render json: @childs, each_serializer: ItemSerializer }

但我需要使用带有附加字段的 JSON 进行响应,例如 parent_id 等。

{parent_id: 15, childs: @childs}

知道如何实现它吗?

item_serializer.rb

class ItemSerializer < ActiveModel::Serializer
  attributes :id, :name, :parent_id
end

items_controller.rb

 def roots
    @childs = Item.where(parent_id: 15)
    respond_to do |format|
        # serializer below does not work...
        format.json { render json: {parent_id: 15, childs: @childs}, each_serializer: ItemSerializer }
    end
end

最佳答案

耶!我明白了!希望对其他人有帮助!

respond_to do |format|
            format.json { render json:
                { parent_id: parent_id, childs: ActiveModel::ArraySerializer.new(@childs, each_serializer: ItemSerializer) }
            }
        end

关于ruby-on-rails - 如何将 ActiveModel::Serializer 应用于自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30049674/

相关文章:

ruby-on-rails - mongoid 的 a/b 测试 gem?

javascript - AngularJS - Json 到树结构

ruby-on-rails - 通过 form_for 编辑自定义用户模型属性

ruby-on-rails - Ruby on Rails 3 + Apache2 + Phusion Passenger:Bundler::GemNotFound 异常

ruby-on-rails - 在 CentOS 6.4 上以离线模式使用 Rvm 安装 Ruby on Rails

java - JSON POST 请求使用 Php 从 Android 中的 HttpClient 从服务器端接收?

javascript - 读取从 API REST 返回的 JSON 对象

ruby-on-rails - 跳过rails counter_cache更新

ruby-on-rails - 如何在 Rails 中编写和包含常规 ruby​​ 类

javascript - rails : Using input from dropdown menu without posting