rails 3.0.3 проверяет, является ли логическое значение истинным - PullRequest
25 голосов
/ 25 ноября 2010

Я хочу проверить, является ли значение истинным или ложным.

Сначала я попробовал:

<% if item.active? %>
    <%= image_tag('on.png', :alt => "Active", :border => 0) %>
<% else %> 
    <%= image_tag('off.png', :alt => "Inactive", :border => 0) %>
<% end %>

Это не работает, но это работает?

<% if item.active == true %>
    <%= image_tag('on.png', :alt => "Active", :border => 0) %>
<% else %> 
    <%= image_tag('off.png', :alt => "Inactive", :border => 0) %>
<% end %>

Не должен ли первый метод работать или я что-то упустил?

Спасибо ...

Ответы [ 2 ]

55 голосов
/ 25 ноября 2010

, если эта строка работает:

if item.active == true

затем

if item.active

тоже будет работать. if item.active? работает только в том случае, если существует метод, имя которого на самом деле active?, что обычно является соглашением для присвоения имени методу, возвращающему true или false.

2 голосов
/ 25 ноября 2010

Это должно работать для вас, если item.active действительно является логическим значением.Если для item.active? не определен метод, ваш пример будет возвращать только ошибку отсутствия метода.

<% if item.active %>
    <%= image_tag('on.png', :alt => "Active", :border => 0) %>
<% else %> 
    <%= image_tag('off.png', :alt => "Inactive", :border => 0) %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...