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

2023-12-22

假设我有一个 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

如何从视图中使用这个 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

请注意,我不仅仅是想使用默认的 Person.as_json,因为我不想渲染secret人物的属性。

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


您可以使用Jbuilder#attributes!. I mean

json.gang do |json|
  json.name @gang.name
  json.gang_members @gang.people.map { |person| person.to_builder.attributes! }
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 JBuilder 视图委托给模型的 to_builder 方法? 的相关文章

随机推荐