1

ユーザーが私のサイトにアクセスするときに、index.html.hamlとindex.js.hamlの両方をレンダリングしたいと思います。(JSを視野から外そうとしています。)

現在、HTMLをレンダリングするだけです。respond_toもちろん、htmlとjsの両方でブロックを追加すると、htmlがレンダリングされます。

どうすればよいですか?もっと良い方法はありますか?ルビーはJSで実行されるため、JSを/assets/jsに含めたくありません。

4

1 に答える 1

4

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>
于 2012-05-14T23:26:35.273 に答える