2010-11-25 12 views
20

値が真か偽かをチェックしたい。rails 3.0.3ブール値が真であるかどうかをチェック

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

私はあなたがすでに回答を受け入れていることを知っていますが、「働きません」とはどういう意味ですか?また、ルビーの「真実」は、「偽とゼロを除くすべて(!)」を意味することに注意してください。たとえば0、 "0"、空の配列などはすべて真理を表します。多分それが問題だったのでしょうか? – Arsen7

答えて

45

この行が動作するかどうか:その後、

if item.active == true 

if item.active 

も動作します。 if item.active?は、名前が実際にactive?のメソッドが存在する場合にのみ機能します。通常は、trueまたはfalseを返すメソッドの命名規則です。

+6

ちょうど脇に、レールはに追加されますか? booleanフィールドのメソッド。値がfalse(つまり0/f/whatever)またはnilに設定されている場合はfalseを返します。したがって、ブール型データベースフィールドに基づいたアクティブな属性がある場合は、アクティブなのでしょうか? *はすべき*。しかし、一般的には、単に "if item.active"と言うのは、動力能量が示唆しているとおりです。 –

1

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 %> 
関連する問題