отображать несколько таблиц HTML - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть таблица Rails под названием Sales, которую я хотел бы отобразить в виде последовательности таблиц HTML на одной странице HTML.

Таблица продаж содержит список транзакций продаж, выполненных SalesPeople (salesperson_id - это поле в каждой записи Sales), и я хотел бы перечислить каждую из их записей Sales, сгруппированных в таблицы HTML, по salesperson_id. Похоже на это:

Продавец : Боб

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

Продавец : Джим

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

Теперь мои первые мысли были о том, что я бы "нашел_только" транзакции продаж, отвечающие моим критериям, а затем перебрал возвращенный массив и отобразил каждого SalesPerson с использованием _partial, но я знаю, что могу выполнить только один рендеринг для результата .

Можно ли добиться этого с помощью одного рендера, мне нужно немного магии HTML / JavaScript или есть другое решение?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

ОК, я нашел способ добиться того, чего я хочу достичь, используя 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 голосов
/ 28 сентября 2011

Вы можете выполнить рендеринг только один раз, как вы сказали, поэтому вы не можете рендерить для каждого продавца.

Вы можете использовать один рендер, если передаете транзакции продаж частичным (см. http://guides.rubyonrails.org/layouts_and_rendering.html#using-render 3.4.4 передача локальных переменных), но внутри этого частичного вы все равно будете использовать «магию html / javascript» .

Внутри партиала, вам нужно использовать 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 %>

Полагаю, вы хотите использовать этот частичный файл где-то еще? Если нет, вы можете просто сделать все вещи внутри представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...