2011-09-28 80 views
0

我有一個叫做Sales的Rails表,我想在單個HTML頁面上的HTML表格序列中呈現。呈現多個HTML表

銷售表包含SalesPeople製作的銷售交易列表(salesperson_id是每個銷售記錄中的字段),並且我希望按salesperson_id列出分組在HTML表中的每個銷售記錄。與此相似:

銷售人員:鮑勃

*PRODUCT* *QUANTITY* 
Widgets  17 
Cogs   5 
Screws  100 

銷售人員:吉姆

*PRODUCT* *QUANTITY* 
Bozzles  49 
Widgets  20 
Screws  250 
Flurbs  22 

現在,我的第一個想法是,我會'find_all的銷售交易滿足我條件,然後遍歷返回的數組,並使用_partial呈現每個SalesPerson,但我知道每個結果只能執行一次渲染。

是否有可能使用單一渲染來實現這一點,我需要一些HTML/JavaScript的魔術,還是有另一種解決方案?

謝謝。

回答

0

OK,我想出了一個方法可以達到我想要通過使用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 %> 
0

你只能渲染一次像你說的,所以你不能渲染每個銷售人員。

如果您將銷售交易傳遞給部分(請參閱http://guides.rubyonrails.org/layouts_and_rendering.html#using-render 3.4.4傳遞局部變量),您可以使用單個渲染,但在該部分內部,您仍然會執行「html/javascript魔術」。

裏面的部分,你需要使用紅寶石的foreach打印每個表,就像這樣:

<% salesTransactions.each do |transaction| %> 
    <table> 
     <tr><td>Product</td><td>Quantity</td></tr> 
     <tr><td>Widgets</td><td><%= transaction.widgets %></td> 
     //..... 
    </table> 
<% end %> 

我猜你想重用局部別的地方?如果沒有,你可以簡單地做所有的視圖內的東西。

+0

感謝您的建議。 – Snips