Ruby и Rails: модификаторы операторов в представлениях? - PullRequest
1 голос
/ 06 августа 2009

У меня есть этот код

<% if approved %>
  <td>Flow Number</td>
<% end %>

и я хотел бы сократить его, используя модификаторы операторов. Конечно, я могу использовать

<%="<td>Flow Number</td>" if approved -%>

но есть ли более короткий путь? Я также хотел бы получить наценку из кавычек.

Ответы [ 3 ]

4 голосов
/ 06 августа 2009

Вы можете использовать «content_tag», который на самом деле не короче, но может быть более привлекательным, не допуская HTML в ваши рубиновые блоки:

<%= content_tag :td, "Flow Number" if approved %>

В противном случае, вы можете написать помощника, который может быть привлекательным, если вам нужно повторно использовать подобную логику на всей странице (или на нескольких страницах).

2 голосов
/ 06 августа 2009

Может быть ХАМЛ ?

Это было бы:

- if approved?
  %td Flow Number

Не совсем то, что вы после того, как я знаю.

0 голосов
/ 07 августа 2009

Да, я думаю, что вспомогательный метод, использующий content_tag внутри, был бы лучшим коротким способом. Используя вспомогательный метод, вы также можете получить желаемый результат, например:

# in view helper
def show_if(condition, wrapper_tag)
  condition ? content_tag(wrapper_tag, yield) : ''
end

# in view
<%= show_if(approved, :td) {'Flow Number'} %>

или

# in view helper
def show_if(condition)
  condition ? yield : ''
end

# in view
<% show_if(approved) do %>
  <td>Flow Number</td>
<% end %>

Мне нравится этот последний метод для хорошего общего способа показать или скрыть целые блоки в зависимости от условия. Надеюсь, это поможет!

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