Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何将其作为一个查询编写?_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 3 如何将其作为一个查询编写?

Ruby on rails 3 如何将其作为一个查询编写?,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我有一个叫Shop的模型和一个叫Brand的模型 shop :has_many_brands brands: belongs_to_shop 我想做的是让一个查询执行以下操作。 选择所有商店和品牌。 显示所有店铺的列表,首先显示按shop.name订购品牌的店铺,然后显示按shop.name订购的其他店铺 希望它有意义 这可能吗?如果您只需要在视图中显示一个列表,最简单的方法是先显示一个列表,然后再显示另一个列表 因此,您将显示所有带有品牌的商店,并进行正常排序 然后显示所有没有品牌的店铺,并

我有一个叫Shop的模型和一个叫Brand的模型

shop :has_many_brands
brands: belongs_to_shop
我想做的是让一个查询执行以下操作。
选择所有商店和品牌。 显示所有店铺的列表,首先显示按shop.name订购品牌的店铺,然后显示按shop.name订购的其他店铺

希望它有意义


这可能吗?

如果您只需要在视图中显示一个列表,最简单的方法是先显示一个列表,然后再显示另一个列表

因此,您将显示所有带有品牌的商店,并进行正常排序

然后显示所有没有品牌的店铺,并正常排序

在您的shop show controller中:

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),则仅当所有店铺都有品牌时,您才需要它们的列表。如果它们没有品牌,您希望在有品牌的店铺之后显示它们?