2011-10-18 20 views

答えて

43
<% if defined?(:dashboard_pane_counter) && dashboard_pane_counter.remainder(3) == 0 %> 
    # do_something here, this assumes that dashboard_pane_counter is defined, but not nil 
<% end %> 
+10

シンボルは私にとっては機能しませんでした。 (変数名) ' – HungryCoder

+0

ありがとう..時には最も簡単な答えは正しいものです:) – baash05

5

レールとインスタンス変数を使用して、nilが定義されてtry方法を持っているので、あなたが行うことができます。

<% if @dashboard_pane_counter.try(:remainder(3)) == 0 %> 
    #do something 
<% end %> 

インスタンス変数が定義されていない場合ので、try(:anything)はnilを返しますので、に評価します偽です。そしてnil == 0は、私はより良いRubyのコード厥

unless var.nil? 

を使用することになり

if !var.nil? 

の偽

+1

変数が定義されていないので、答えが出ない場合でもエラーが発生します質問。 – michaeltwofish

+0

いいえ、しませんが、Railsの中に組み込まれて魔法 "があります。 ' 1.9.3p392を:005> @hh => 1.9.3p392 ゼロ:006> hh.try @(:何でも) => ' – Yule

+0

はnilですから、インスタンス変数の場合、nilは 'try'メソッドを持っています – Yule

-2

Instedです!

+3

ありがとうございます。 if!adallajglaksdkfaj.nil?を試してみてください。 「関数」の最初の行に表示されます。 kablammo :) – baash05

3

この質問は数年前からあるので、local_assignsが、そのために使用することができ、私はそれはそれはここではノートに

だレール

<% if local_assigns[:dashboard_pane_counter] 
       && dashboard_pane_counter.remainder(3) == 0%> 
<% end %> 

の以前のバージョンに存在することを確認

http://apidock.com/rails/ActionController/Base/render

関連する問題