2011-09-28 5 views
0

하나의 HTML 페이지에 일련의 HTML 테이블로 렌더링 할 Sales라는 Rails 테이블이 있습니다.여러 HTML 테이블 렌더링

영업 테이블에는 SalesPeople에서 만든 판매 트랜잭션 목록이 포함되어 있습니다 (salesperson_id는 각 Sales 레코드 내의 필드 임). salesperson_id별로 HTML 테이블에 그룹화 된 Sales 레코드를 각각 나열하고 싶습니다. 이 유사 :

판매 사람 : 밥

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

판매 사람 : 짐

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

이제 처음 생각 나는 것 'find_all'판매 트랜잭션이 충족 것을이었다 내 criteria를 반환 한 다음 반환 된 배열을 반복하고 _partial을 사용하여 각 SalesPerson을 렌더링하지만 결과 당 하나의 렌더링 만 수행 할 수 있다는 것을 알고 있습니다.

단일 렌더링을 사용하여이 작업을 수행 할 수 있습니까? 일부 HTML/JavaScript 마법이 필요합니까? 아니면 다른 해결책이 있습니까?

감사합니다.

답변

0

OK, 나는이 RailsCast의 도움으로, GROUP_BY을 사용하여 달성하기 위해 원하는 것을 달성 할 수있는 방법,

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 magic"이 수행됩니다. 부분적인 내부

, 당신은 다음과 같이 각 테이블을 인쇄 할 루비 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