渲染多个HTML表格

时间:2011-09-28 17:35:20

标签: ruby-on-rails

我有一个名为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魔法,还是有其他解决方案?

感谢。

2 个答案:

答案 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 %>