Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 在RubyonRails中可以使用双层模型吗?_Ruby On Rails_Loops - Fatal编程技术网

Ruby on rails 在RubyonRails中可以使用双层模型吗?

Ruby on rails 在RubyonRails中可以使用双层模型吗?,ruby-on-rails,loops,Ruby On Rails,Loops,以下是按颜色订购的产品列表: 红色的 产品红色1产品红色2产品红色3 蓝色的 产品蓝1 黄色的 产品黄1 为此,我必须区分控制器中的产品: @productscolor={} @products.each do |product| @productscolor=[product.color][product] end 但在我看来,我该如何管理它呢 我想我会有一个_colorproduct.erb和一个_colorproductdetail.erb 这种双循环视图的名称是什么?这在rail

以下是按颜色订购的产品列表:

红色的

产品红色1产品红色2产品红色3

蓝色的

产品蓝1

黄色的

产品黄1

为此,我必须区分控制器中的产品:

@productscolor={}
@products.each do |product|
   @productscolor=[product.color][product]
end
但在我看来,我该如何管理它呢

我想我会有一个_colorproduct.erb和一个_colorproductdetail.erb

这种双循环视图的名称是什么?这在rails中可行吗?

简称为“break”,因为您一直在重新分配@productscolor;)

您需要一个以颜色为键的散列,以及一个以该颜色的产品列表为值的散列

m = Hash.new([])
@products.each do |p|
    m[p.color] << p
end
m=Hash.new([])
@产品。每个产品都有| p|
m[p.color]短名称为“断开”,因为您一直在重新分配@productscolor;)

您需要一个以颜色为键的散列,以及一个以该颜色的产品列表为值的散列

m = Hash.new([])
@products.each do |p|
    m[p.color] << p
end
m=Hash.new([])
@产品。每个产品都有| p|

m[p.color]实际上,您需要的是按枚举分组

@productscolor = @products.group_by{|x|x.color}
这意味着您的@productscolor实例变量现在具有

{"Yellow" => [Product1, Product2], "Red" => [Product3, Product4], ...}
您可以对数组散列的键进行排序并获得颜色,然后在产品上呈现部分集合。在视图中-

<% @productscolor.keys.sort.each do |color| %>
   <%= color %>
   <%= render :partial => 'colorproductdetail', :collection => @productscolor[color] %>
<% end %>

'colorproductdetail',:collection=>@productscolor[color]>

随意修改。

实际上,您需要的是按枚举分组

@productscolor = @products.group_by{|x|x.color}
这意味着您的@productscolor实例变量现在具有

{"Yellow" => [Product1, Product2], "Red" => [Product3, Product4], ...}
您可以对数组散列的键进行排序并获得颜色,然后在产品上呈现部分集合。在视图中-

<% @productscolor.keys.sort.each do |color| %>
   <%= color %>
   <%= render :partial => 'colorproductdetail', :collection => @productscolor[color] %>
<% end %>

'colorproductdetail',:collection=>@productscolor[color]>
随意修改