如何列出属于某个类别的所有子类别的所有项目? ROR

时间:2013-01-21 18:27:46

标签: ruby-on-rails filter relationship categories

以下是我的模特关系:

  • Category has_many Subcategories

  • Subcategory belongs_to CategorySubcategories有一个category_id字段)

  • Subcategory has_many items

  • Item belongs_to SubcategoryItems有一个subcategory_id字段)

我想在类别的显示视图中列出属于某个类别的子类别的所有项目。

例如,在食品类别中,有餐厅,快餐和送货子类别。 我想在食品类别的展示视图中显示3个子类别中的所有项目。

我有条件使这成为可能:

<%@items = Item.find(:all, :limit=> 10, :conditions {:subcategory_id =>  }, :order=>"created_at ASC")%>
        <%@items .each do |items|%>
Items info shown here
<% end %>

我不知道是否必须通过条件,if语句或辅助方法来完成它。

1 个答案:

答案 0 :(得分:2)

这就是我如何解决它。

我在变量@subcategory_id中保存了subcategory.category_id和category.id之间的比较

<%@subcategory_id = Subcategory.find(:all, :conditions => {:category_id => @category.id}, :order=>"created_at ASC")%>

然后我使用该变量在项目列表的查询中生成条件

<%@lastitems= Item.find(:all, :conditions => {:subcategory_id => @subcategory_id}, :order=>"created_at ASC")%>
        <%@lastitems.each do |lastitem|%>


items info goes here

<%end%>

感谢。