rails 3.0.3检查布尔值是否为true

and*_*aer 25 ruby ruby-on-rails

我想检查值是true还是false.

我一开始尝试了这个:

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

这不起作用,但这有效吗?

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

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

谢谢...

nop*_*ole 57

如果这条线有效:

if item.active == true
Run Code Online (Sandbox Code Playgroud)

然后

if item.active
Run Code Online (Sandbox Code Playgroud)

也会工作. if item.active?仅当存在名称实际的方法时才起作用active?,这通常是命名返回true或false的方法的约定.

  • 另外,rails会在<attribute>中添加?布尔字段的方法.如果该值设置为false(即0/f/what)或nil,则返回false.那么,如果你有一个基于布尔数据库字段的活动属性,那么.active?*应该管用.但一般情况下,最好只说"if item.active",如动静能量所暗示的那样. (6认同)