Ruby on rails 3 rails分组依据以生成嵌套表

Ruby on rails 3 rails分组依据以生成嵌套表,ruby-on-rails-3,group-by,Ruby On Rails 3,Group By,我有产品和存货。每个库存包含产品标识、颜色标识、存储标识和库存 对于给定的产品,我希望按存储、颜色和输出等方式对库存进行分组,如: 存储1 存储1 颜色A:现货 颜色B:现货 存储2: 颜色A:现货 颜色B:现货 不幸的是,我无法渲染视图 到目前为止,我的问题如下: def all_units_in_stock stocks.in_stock.group(:storage_id, :color_id).includes(:storage, :color) end which returns

我有产品和存货。每个库存包含产品标识、颜色标识、存储标识和库存

对于给定的产品,我希望按存储、颜色和输出等方式对库存进行分组,如:

存储1

存储1 颜色A:现货 颜色B:现货 存储2: 颜色A:现货 颜色B:现货 不幸的是,我无法渲染视图

到目前为止,我的问题如下:

def all_units_in_stock
  stocks.in_stock.group(:storage_id, :color_id).includes(:storage, :color)
end

which returns
Product.find(11).all_units_in_stock
Product Load (37.1ms)  SELECT "products".* FROM "products" WHERE "products"."id" = ? LIMIT 1  [["id", 11]]
Stock Load (0.3ms)  SELECT "stocks".* FROM "stocks" WHERE "stocks"."product_id" = 11 AND (in_stock > 0) GROUP BY storage_id
Storage Load (0.2ms)  SELECT "storages".* FROM "storages" WHERE "storages"."id" IN (1, 2, 3, 4, 5)
Color Load (0.2ms)  SELECT "colors".* FROM "colors" WHERE "colors"."id" IN (3)
=> [#<Stock id: 162, product_id: 11, storage_id: 1, in_stock: 10.0, created_at: "2011-11-07 22:54:50", updated_at: "2011-11-07 22:54:50", color_id: 3>, #<Stock id: 163, product_id: 11, storage_id: 2, in_stock: 10.0, created_at: "2011-11-07 22:54:50", updated_at: "2011-11-07 22:54:50", color_id: 3>

按存储顺序订购,然后按颜色订购。然后对结果使用group_by函数,这将创建一个以存储Id为键的有序散列。因为您是按存储和颜色排序的,所以排序将保留在散列中

products = Product.find(11).all_units_in_stock
@group_by_storage = products.group_by {|p| p.storage_id }
<% @group_by_storage.each do |key, value| %>
  <ul>
    <li><%= key %>

      <ul>
        <li><%= value.color_id %>
      </ul>
    </li>
  <ul>
现在在您的视图中,您可以遍历散列

products = Product.find(11).all_units_in_stock
@group_by_storage = products.group_by {|p| p.storage_id }
<% @group_by_storage.each do |key, value| %>
  <ul>
    <li><%= key %>

      <ul>
        <li><%= value.color_id %>
      </ul>
    </li>
  <ul>

如果erb语法正确,请原谅,我习惯于HAML标记。

按存储顺序,然后按颜色排序。然后对结果使用group_by函数,这将创建一个以存储Id为键的有序散列。因为您是按存储和颜色排序的,所以排序将保留在散列中

products = Product.find(11).all_units_in_stock
@group_by_storage = products.group_by {|p| p.storage_id }
<% @group_by_storage.each do |key, value| %>
  <ul>
    <li><%= key %>

      <ul>
        <li><%= value.color_id %>
      </ul>
    </li>
  <ul>
现在在您的视图中,您可以遍历散列

products = Product.find(11).all_units_in_stock
@group_by_storage = products.group_by {|p| p.storage_id }
<% @group_by_storage.each do |key, value| %>
  <ul>
    <li><%= key %>

      <ul>
        <li><%= value.color_id %>
      </ul>
    </li>
  <ul>
请原谅erb语法,如果正确的话,我习惯于HAML标记