我可能在这里忽略了一种简单的方法,但是编写在 2 轴上动态的表的最佳方法是什么。我正在使用 Rails 3.2
例如,假设我有以下型号
class Region
has_many :shops
end
class Shop
has_many :sales
has_many :products, through: :sales
end
class Sale
belongs_to :shop
belongs_to :product
end
class Product
has_many :sales
has_many :shops, through: :sales
end
在区域显示视图中,我想显示一个表格,在列标题中列出商店,在行标题中列出产品,并计算Sale.price
每个单元格的平均值。
我陷入了混乱的嵌套块中,计算出的值似乎与我的预期不符。
有没有一种简单的 Rails 方式来做这样的事情?或者任何人都可以推荐我可以学习的任何示例代码。
我的实际模型比我描述的要复杂一些,我想知道是否应该花时间调试代码,或者是否应该采用更简单的方法。这似乎是一个相当普遍的要求。
编辑
我的代码示例
#views/regions/show.html.erb
<table>
<tr>
<th>Shop Name</th>
<% for product in @region.products.uniq %>
<th><%= product.name%></th>
<% end %>
</tr>
<% for shop in @region.shops.uniq %>
<tr>
<td><%= shop.name %></td>
<% for product in @region.products.uniq %>
<td><%= product.sales.average(:price, conditions: ['sale.shop_id = ?', shop], :include => :sale) %></td>
<% end %>
</tr>
<% end %>
</table>