js.erbファイルでif文を使うときの注意

Ruby on Rails で js.erbファイル中でif文を使うとき、たとえば配列のオブジェクトにパラメータがないと、
条件がtrue/falseいずれの場合であれ、エラーとなるので注意する。

当然、Rubyの出力用パラメータはJavaScriptの条件に関係なく、出力される訳ですが、
その変数がセットされていないとエラーになってしまいます。
PHPで同じようなことをやった覚えがありますが、そちらはエラーにならなかったような…。

回避策としては、パラメータが必要のないテンプレート変数を用いるか、
配列を展開するのであれば、配列が空でない時、といった条件をつけて、
中身がある時だけ出力処理を実行します


実際のスクリプト

var mode;
mode = "<%= @mode %>";

if(mode == 'rest'){
#省略
}else{
<% if @License != nil %>  → このif文がないと、mode == 'rest' の条件でもRubyのエラーが発生する。
$("#name").val("<%= @License.type %>");
$("#ver").val("<%= @License.ver %>");
<% end %>
}

コメント

この記事へのコメントはありません。

CAPTCHA


PAGE TOP