我有一个名为Shop的模型和一个名为Brand的模型。
shop :has_many_brands
brands: belongs_to_shop
我想做的是有一个查询执行以下操作 选择所有商店和品牌。 显示所有商店的列表,首先展示有shop.name订购品牌的商店,然后通过shop.name订购商店。
希望它有意义......
这可能吗?
答案 0 :(得分:0)
如果您只需要在视图中使用列表,最简单的方法是显示一个,然后显示另一个。
因此,您将显示所有品牌商店,并正常排序。
然后显示所有没有品牌的商店,并正常排序。
在您的商店展示控制器中:
if Shop.brands.empty?
@shopsWithout = @shops.sort_by{ |shop| shop.name}
else
@shopsWith = @shops.sort_by{ |shop| topic.name}
end
然后在你的视图中,只显示每个。
<% unless @shopsWith.blank? %>
<% @shopsWith.each do |shop| %>
Shop: <%= shop.name %> Brand: <%= (you can loop shop.brands.all) %>
<% end %>
<% end %>
<% unless @shopsWithout.blank? %>
<% @shopsWithout.each do |shop| %>
Shop: <%= shop.name %><br />
<% end %>
<% end %>
我测试过这个并且工作正常。不知道如何连接@shopsWith和@shopsWithout,但是如果你可以在控制器中做到这一点(@shops = @shopsWith&lt;&lt; @shopsWithout)那么你只需要一个循环。如果没有Ruby认为我正在使用数组而不是对象集合,我无法弄明白。