我有一个名为Sales的Rails表,我想在单个HTML页面上的一系列HTML表格中进行渲染。
销售表包含SalesPeople制作的销售交易列表(salesperson_id是每个销售记录中的一个字段),我想按salesperson_id列出按HTML表格分组的每个销售记录。与此类似:
销售人员:Bob
*PRODUCT* *QUANTITY*
Widgets 17
Cogs 5
Screws 100
销售人员:Jim
*PRODUCT* *QUANTITY*
Bozzles 49
Widgets 20
Screws 250
Flurbs 22
现在,我的第一个想法是,我'find_all'销售交易符合我的标准,然后循环返回的数组,并使用_partial渲染每个SalesPerson,但我知道我只能执行一个渲染每个结果
是否可以使用单个渲染实现此目的,是否需要一些HTML / JavaScript魔法,还是有其他解决方案?
感谢。
答案 0 :(得分:0)
你只能像你说的那样渲染一次,所以你不能为每个销售人员渲染。
如果将销售交易传递给部分(参考http://guides.rubyonrails.org/layouts_and_rendering.html#using-render 3.4.4传递局部变量),您可以使用单个渲染,但在该部分内部,无论如何都将执行“html / javascript魔术”。
在partial中,您需要使用ruby foreach打印每个表,如下所示:
<% salesTransactions.each do |transaction| %>
<table>
<tr><td>Product</td><td>Quantity</td></tr>
<tr><td>Widgets</td><td><%= transaction.widgets %></td>
//.....
</table>
<% end %>
我猜你想在其他地方重用那个部分?如果没有,你可以简单地完成视图中的所有内容。
答案 1 :(得分:0)
好的,我想通过使用group_by来实现我想要实现的目标,在RailsCast的帮助下,
http://railscasts.com/episodes/29-group-by-month(精彩系列的#29)
因此,我使用group_by按salesperson_id对销售进行分组,然后在我看来,
<% @groupedSales.each do |salesperson_id, sales| %>
<h2><%= Salesperson.find(salesperson_id).name %></h2>
<table>
<thead>
<tr>
<th>Date</th>
<th>Product</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<% sales.each do |sales_activity| %>
<tr>
<td><%= sales_activity.created_at.strftime('%d/%m/%y') %></td>
<td><%= sales_activity.product %></td>
<td><%= sales_activity.quantity %></td>
</tr>
<% end %>
</tbody>
</table>
<% end %>