<% if dashboard_pane_counter.remainder(3) == 0 %>
do something
<% end>
Dasboard_pane_counterが定義されていない場合、例外をスローするのではなく、これをfalseに評価するにはどうすればよいですか?
<% 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 %>
Railsおよびインスタンス変数を使用する場合、nilにはtry
メソッドが定義されているため、次のことができます。
_<% if @dashboard_pane_counter.try(:remainder(3)) == 0 %>
#do something
<% end %>
_
したがって、インスタンス変数が定義されていない場合、try(:anything)
はnilを返すため、falseと評価されます。そして_nil == 0
_は偽です
local_assignsを使用できます。この質問は数年前の質問なので、以前のバージョンのRailsに存在することを確認しました
<% if local_assigns[:dashboard_pane_counter]
&& dashboard_pane_counter.remainder(3) == 0%>
<% end %>
ここのメモにあります
私のような初心者コーダーのためにこの回答を投稿する。この質問は、2つの手順(&&を使用する場合は1つ)を使用するだけで回答できます。これは長くて見苦しい答えですが、新しいプログラマーが何をしているかを理解するのに役立ち、他の答えにはまだない非常に単純なテクニックを使用します。トリックは、インスタンス(@)変数を使用することです。ローカル変数では機能しません。
if @foo
"bar"
end
@fooが定義されている場合は「bar」が返され、それ以外の場合は(エラーなしで)返されます。したがって、2つのステップで:
if @dashboard_pane_counter
if @dashboard_plane_counter.remainder(3) == 0
do something
end
end