2014-05-03 3 views
0

Я создал частичное для LineItem, что в моем случае испускает <tr> с паролем <td> s. Это прекрасно работает и денди.Правильный способ условного рендеринга в частичном Rails?

Что бы я хотел сделать, это то же частичное в разных местах. В исходном представлении много места, поэтому отображение каждой ячейки в порядке. Но другая (боковая панель) имеет гораздо меньше места, и я бы хотел отобразить только две из 5 ячеек.

Итак, возникает вопрос, каков правильный способ реализации этого? Я бы хотел, чтобы «полная» версия была по умолчанию, если не указано иное, и используйте только ограниченную версию, если передан параметр.

В настоящее время я, вероятно, использовал функцию передачи локальных данных в частичное и проверил, задан ли параметр limited, и если да, пропустите последние N ячеек. Я на правильном пути, и если да, то какую переменную я должен использовать (могу ли я использовать для этого символы)?

Current _line_item.html.erb (что я несколько недоволен)

<tr> 
    <td><%= line_item.quantity %>&times;</td> 
    <td><%= line_item.product.title %></td> 
    <td class="item_price"><%= number_to_currency(line_item.total_price, unit: '€') %></td> 
    <% unless defined? limited %> 
    <td class="remove_item"><%= button_to 'Remove', line_item, method: :delete %></td> 
    <% end %> 
</tr> 

Edit: Добавлена ​​текущая версия.

+0

Не могли бы вы добавить некоторый код, что вы сделали, что мы можем скопировать и вставить? Я нахожу это очень энергоемким, чтобы привести пример с нуля. :) – Micka

+0

Уверен, там вы ходите :) – bobblez

ответ

1

Да, вы на правильном пути. Вы можете сделать что-то вроде

<%= render 'partial_name', limited: true %> 

, а затем в парциальное:

<% limited ||= false %> # More explicit as to what default value is 
<tr> 
    <td><%= line_item.quantity %>&times;</td> 
    <td><%= line_item.product.title %></td> 
    <td class="item_price"><%= number_to_currency(line_item.total_price, unit: '€') %></td> 
    <% unless limited %> 
    <td class="remove_item"><%= button_to 'Remove', line_item, method: :delete %></td> 
    <% end %> 
</tr> 
+0

Ах, конечно, мне было интересно, как указать этот параметр по умолчанию - это имеет смысл. Благодаря! – bobblez

+0

Без проблем, рад, что я мог бы помочь :) – tyler

Смежные вопросы