Условное заявление Simple Rails - PullRequest
0 голосов
/ 19 января 2011

Довольно просто, я уверен ... но я не могу понять, почему это не сработает.

<tr<% if film.viewed == true %> class="viewed"<% end %>>

film.viewed является логическим значением, но он не отображает класс, если это правда. Вероятно, синтаксическая ошибка. Любая помощь? Также есть более простой способ написать это без открытия и закрытия? Я пытался использовать:

<tr<% if film.viewed == true puts class=\"viewed\" end %>>

Опять, вероятно, синтаксическая ошибка. Я пришел из PHP, поэтому я все еще учусь.

Спасибо.

Ответы [ 5 ]

5 голосов
/ 19 января 2011

Ваша лучшая ставка была бы что-то вроде следующего ...

<tr <%= 'class="viewed"' if film.viewed? -%>>

Все логические столбцы ActiveRecord получают метод вопросительного знака, который возвращает значение true или false. Поскольку MySQL хранит логические значения как 1/0, я обычно использую метод вопросительного знака просто для безопасности.

2 голосов
/ 19 января 2011

Я думаю, что это легче читать:

<%= content_tag(:tr, "", :class => film.viewed? ? "viewed" : nil) %>
0 голосов
/ 19 января 2011

Я бы предпочел сделать что-то подобное.

<tr class="<%= film.viewed ? "viewed" : "" -%>"></tr>
0 голосов
/ 19 января 2011
<tr <%= film.viewed ? 'class="viewed"' : 'class="notviewed" %> >

Итак, некоторые заметки.

  • Чтобы сделать полный if ... end, вам понадобился бы ";"или перевод строки перед end.
  • У вас есть локальная переменная или параметр с именем film?
  • Вам нужен <%=, а не просто <% для интерполяцииконечный результат кода вашего шаблона.
  • Я полагаю, что драйвер шаблона erb вызывает метод to_s для любого результата, который он получает, и, поскольку nil.to_s возвращает "", тогда вы в безопасности с автономным ложнымif оператор, который действует как выражение возврата nil.Но каким-то образом выражение всегда возвращает значение, которое было бы желательно видеть интерполированным, казалось бы, имеет смысл.
0 голосов
/ 19 января 2011

Я предполагаю, что film.viewed не соответствует действительности, но другое значение.

Попробуйте что-нибудь с эффектом

<tr <%= "class='viewed'" if film.viewed %> >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...