如何从JBuilder视图委托模型的to_builder方法?

Chr*_*son 7 ruby-on-rails jbuilder actionview ruby-on-rails-3

假设我有一个Person类和一个Gang类

class Person
  belongs_to :gang
  attr_accessible :name, :secret

  def to_builder
    Jbuilder.new do |app|
      person.id id
      person.name name
    end
  end
end

class Gang
  has_many :people
  attr_accessible :name
end
Run Code Online (Sandbox Code Playgroud)

如何从视图中使用此to_builder方法?

例如

#app/views/gang/show.json.jbuilder (@gang set by the controller)

json.gang do |json|
  json.name @gang.name
  json.gang_members(@gang.people) do |person|
     #how do I delegate to the person.to_builder here?
  end
end
Run Code Online (Sandbox Code Playgroud)

请注意,我不想只使用默认的Person.as_json,因为我不想secret在Person上呈现属性.

我尝试过的大多数事情最终都是渲染了Person.as_json,而不是Person.to_builder.

yas*_*oza 6

你可以用Jbuilder#attributes!.我的意思是

json.gang do |json|
  json.name @gang.name
  json.gang_members @gang.people.map { |person| person.to_builder.attributes! }
end
Run Code Online (Sandbox Code Playgroud)

  • 顶级单个对象怎么样?在gang_member#show.json动作中? (5认同)