嵌套输出与相关模型

时间:2011-01-07 12:32:35

标签: ruby-on-rails

我有一个模型类别和一个模型Weblink。类别has_many Weblink和Weblink belongs_to类别。现在,我希望在视图和类别中显示属于该类别的所有网络链接中的所有类别,链接此内容:

 <ul> 

&lt;%@ categories.each do | category | %GT;     

  • &lt;%= category.category_name%&gt;
  •     &lt;%@ weblinks.each do | weblink | %GT;       
  • &lt;%= weblink.category_name link_to weblink.link_name,weblink.link_url%&gt;
  •     &lt;%end%&gt;   &lt;%end%&gt;  

    在控制器中我有:

       @categories = Category.all
    

    @weblinks = Weblink.all 这显示了每个类别以及每个类别中的所有网络链接,而不仅仅是属于特定类别的链接。我该如何解决这个问题?

    2 个答案:

    答案 0 :(得分:0)

    使用has_many:

    获得的宏将内循环范围限定为外部类别
    <% @categories.each do |category| %>
      <%= category.category_name %>
      <% category.weblinks.each do |weblink| %>
        <%= link_to weblink.link_name, weblink.link_url %>
      <% end %>
    <% end %>
    

    答案 1 :(得分:0)

    您的视图代码应如下所示

    <% @categories.each do |category| %>
       <%= category.name >
       <% category.weblinks.each do |weblink| %>
          <%= link_to weblink.name, weblink.link_url %>
       <% end -%>
    <% end -%>
    

    你的控制器,在查询所有类别时,你还应该包括weblinks模型,如下所示:

    @categories = Category.all(:include => :weblinks)