質問: Railsのテンプレート内に記述したJavascript文を、レンダリング時に実行されないようにしたいと考えています。 現在は、Javascriptの仕様なのか、以下のようなソースコードがある時、テンプレートがレンダリングされた時に、if文内でRubyを用いて書いた処理が実行されてしまいます。 ``` ``` 実現したい処理としては、テンプレートのレンダリング時にはif文内の処理を行わせず、buttonクラスをクリックした時のみ処理させたいと思っております。 良い方法があれば、ご教授頂ければと思っております。宜しくお願いします。
回答: Javascriptがどうこうというより、Railsのテンプレートを誤解されています。 ``` ``` このテンプレート中に `<% %>` で書いたRubyのコードは、レンダリングの際に実行されるため、次のようなHTMLがブラウザに送られることになります。 ``` ``` レンダリング処理では単にテンプレートファイルに `<% %>` が現れたらそのコードを実行しているだけで、それがJavascriptコードの一部なのか、まして関数や if 文の中なのかということは考慮しませんから、このような挙動になります。 ボタンを押した時にRubyを実行したいとなると、コントローラの別アクションや別テンプレートにその処理を書いておき、Ajaxで呼び出す必要があるように思います。 (Railsでの具体的な方法については詳しくないので調べていただけると)