1. ホーム
  2. javascript

[解決済み] Rails 3アプリでページ固有のJavaScriptを追加する最良の方法とは?

2022-04-26 11:18:49

質問

Rails 3には、控えめなJavaScriptがいくつかあり、とてもクールです。

しかし、特定のページに追加のJavaScriptを含めるには、どのような方法がベストなのか疑問に思っていました。

例えば、以前やっていたかもしれないところ。

<%= f.radio_button :rating, 'positive', :onclick => "$('some_div').show();" %>

のようなもので目立たなくすることができるようになりました。

<%= f.radio_button :rating, 'positive' %>

# then in some other file
$('user_rating_positive').click(function() {
  $('some_div').show();
}

そこで質問なのですが、そのJavaScriptをどこに、どのように組み込むのでしょうか?を埋め尽くしたくはないのです。 application.js このJavaScriptはこの1つのビューにのみ適用されるからです。各ページのカスタムJavaScriptファイルを何らかの方法で含めるか、ヘッダーが探すインスタンス変数に貼り付けるべきでしょうか?

解決方法は?

私がやりたいのは、ビューごとのJavascriptを content_for :head ブロックを作成し yield をアプリケーションのレイアウトでそのブロックに追加します。例えば

もし、かなり短いのであれば

<% content_for :head do %>
  <script type="text/javascript">
    $(function() {
      $('user_rating_positve').click(function() {
        $('some_div').show();
      }
    });
  </script>
<% end %>

または、もっと長い場合は、次に。

<% content_for :head do %>
  <script type="text/javascript">
    <%= render :partial => "my_view_javascript"
  </script>
<% end %>

次に、レイアウトファイルで

<head>
  ...
  <%= yield :head %>
</head>