Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4呈现json布局_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4呈现json布局

Ruby on rails Rails 4呈现json布局,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,是否有一种方法可以为所有json响应追加数据(例如,{:foo=>6}),使诸如render:json=>{..}之类的代码变成{“foo”:6,…} 我试图在app/views/application.json.erb中创建一个json布局,但似乎没有什么不同 我使用的代码通常类似于: respond_to do |format| format.html format.json { render json: {..} } end 在使用json视图时,我可以使用它,但是为每个响应创建

是否有一种方法可以为所有json响应追加数据(例如,
{:foo=>6}
),使诸如
render:json=>{..}
之类的代码变成
{“foo”:6,…}

我试图在app/views/application.json.erb中创建一个json布局,但似乎没有什么不同

我使用的代码通常类似于:

respond_to do |format|
  format.html
  format.json { render json: {..} }
end
在使用json视图时,我可以使用它,但是为每个响应创建一个视图有点麻烦。

使用、定义一个自定义序列化程序并为每个模型的序列化程序继承它

假设我们有一个
Bar
和一个
Baz
模型。然后,我们将每个序列化器定义为:

class FooSerializer < ActiveModel::Serializer
  attributes :foo

  def foo
    6
  end
end

class BarSerializer < FooSerializer
  attributes :id, :attr_one, :attr_two
  # ...
end

class BazSerializer < FooSerializer
  attributes :id, :attr_1, :attr_2
  # ...
end

您可以拥有布局并设置公共属性。您可以通过解析yield来获得休息

{ bar: { foo: 6, id: 1, attr_one: "something", attr_two: "something" } }
{ baz: { foo: 6, id: 1, attr_1: "something", attr_2: "something" } }