ユーザーが私のサイトにアクセスするときに、index.html.hamlとindex.js.hamlの両方をレンダリングしたいと思います。(JSを視野から外そうとしています。)
現在、HTMLをレンダリングするだけです。respond_to
もちろん、htmlとjsの両方でブロックを追加すると、htmlがレンダリングされます。
どうすればよいですか?もっと良い方法はありますか?ルビーはJSで実行されるため、JSを/assets/jsに含めたくありません。
ユーザーが私のサイトにアクセスするときに、index.html.hamlとindex.js.hamlの両方をレンダリングしたいと思います。(JSを視野から外そうとしています。)
現在、HTMLをレンダリングするだけです。respond_to
もちろん、htmlとjsの両方でブロックを追加すると、htmlがレンダリングされます。
どうすればよいですか?もっと良い方法はありますか?ルビーはJSで実行されるため、JSを/assets/jsに含めたくありません。
Rails コントローラーのアクションは、一度に 1 つの HTTP リクエストにしか応答できません。また、複数の HTTP リクエストに応答できる場合でも、最初のリクエストは HTML からリクエストされます (したがって、別のリクエストになります)。
わかりやすくするために Javascript を別のファイルに保持したい場合は、パーシャルを作成してそのようにロードできます。
パーシャル (./views/mycontroller/my_action.html.erb) に渡された @my_var でコントローラー アクションに応答するビュー:
<%= render 'my_action_js', :my_var => @my_var %>
そして部分 (./views/mycontroller/_my_action_js.html.erb)
<script type="text/javascript">
alert(<%= my_var %>);
</script>