rails 3.0.3检查布尔值是否为true

时间:2010-11-25 09:44:58

标签: ruby-on-rails ruby

我想检查一个值是真还是假。

我最初尝试过这个:

<% 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 %>

第一种方法不应该工作还是我错过了什么?

...谢谢

3 个答案:

答案 0 :(得分:55)

如果此行有效:

if item.active == true

然后

if item.active

也会奏效。 if item.active?仅在存在名称实际为active?的方法时才有效,这通常是命名返回true或false的方法的惯例。

答案 1 :(得分:2)

这应该对你有用,假设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 %>

答案 2 :(得分:0)

另一种方法是使用单行,否则

<%= active ? here is your statement for true : here is your statement for false %>

要使active?工作,您的item对象中应该有一个def active?方法。