[英]Rails 4 calling nested associations
我是Rails的新手,但今天就开始遇到这个问题,这是我以前从未经历过的。 当前正在处理带有一些嵌套关联的应用程序。 虽然我可以通过父关联创建和添加保存这些嵌套关联,但似乎无法很好地调用关联模型中的元素。 我可以看到信息已保存,但是当我调用它时,会得到模型的名称,而不是表的名称列中的名称。
brew.rb
class Brew < ActiveRecord::Base
has_many :fermentables
has_many :extras
has_many :hops
has_many :yeasts
accepts_nested_attributes_for :hops
end
hop.rb
class Hop < ActiveRecord::Base
belongs_to :brew
end
show.html.erb
<%= @brew.name %>
<%= @brew.story %>
<%= @brew.walkthrough %>
<%= @brew.hops.name%>
除了@ brew.hops.name,该节目几乎可以正常显示所有内容。 它仅显示跳。 当我进入Rails控制台时,可以看到该名称已保存。 但是只有当我做类似的事情时。
t = Brew.last
t.hops.name
结果仅出现在“跳跃”一词中
但是如果我只是说
t.hops
我得到
` SELECT "hops".* FROM "hops" WHERE "hops"."brew_id" = ? [["brew_id", 28]]
=> #<ActiveRecord::Associations::CollectionProxy [#<Hop id: 6, name: "Warrior",
brew_id: 28, created_at: "2013-06-09 22:09:19", updated_at: "2013-06-09 22:09:19">]> `
Brew和跃点是一对多的关系,因此@brew.hops
返回属于@brew
的所有跃点的@brew
。 因此,如果要显示所有关联的hops
名称,则应执行以下操作:
<% @brew.hops.each do |hop| %>
<%= hop.name %><br />
<% end %>
t.hops
返回一个表示has_many
关联本身的对象,而不是单个Hop记录,并且在该关联对象上调用name
方法将给出关联模型的类的名称(Hop类)。
因此,我认为您想遍历关联的啤酒花列表并打印它们的每个名称:
<%- @brew.hops.each do |hop| -%>
Hop: <%= hop.name %>
<%- end -%>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.