繁体   English   中英

Rails 4调用嵌套关联

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM