我想检查一个值是真还是假。
我最初尝试过这个:
<% 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 %>
第一种方法不应该工作还是我错过了什么?
...谢谢
答案 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?
方法。