考虑我有一个索引控制器,它将显示所有类别和子类别
我的索引控制器有 @categories = Category.where(status:true)
category.rb
has_many :sub_categories
这是我的sub_category
sub_category.rb
belongs_to :category
在我看来,我有
<% @categories.each do |category| %>
<%= category.name %>
<% category.sub_categories.each do |sub_category| %>
<%= sub_category.name %>
<% end %>
<% end %>
我的sub_category有status(true, false)
我只需显示sub_category
status
为true
我该怎么办呢。
答案 0 :(得分:2)
使用where
,即category.sub_categories.where(status: true)
:
<% @categories.each do |category| %>
<%= category.name %>
<% category.sub_categories.where(status: true).each do |sub_category| %>
<%= sub_category.name %>
<% end %>
<% end %>
或者甚至更好地仅返回所需内容,只需选择@categories
subcategories
和status = true
。
对于此更新,您的控制器的操作代码已定义@categories
:
# controller
@categories = Category.includes(:sub_categories).where('sub_categories.status = ?', true)
然后在你看来:
<% @categories.each do |category| %>
<%= category.name %>
<% category.sub_categories.each do |sub_category| %>
<%= sub_category.name %>
<% end %>
<% end %>
答案 1 :(得分:0)
我建议您在应用中使用范围。在SubCategory模型中添加scope :active, where(active: true)
,然后使用category.sub_categories.active.each ...