1

Rails 3の方法は、すべてのjavascriptをグローバルにアプリケーションに含めることのようです。私はこれで正しいですか?

理由は何ですか?

私が正しくない場合、ページ固有のJavaScriptを含める標準的な方法は何ですか?

ありがとう!

4

4 に答える 4

1

デフォルトでは、Rails 3 には/app/assets/javascripts 内の他のすべての JS ファイルに依存させることを含むapplication.jsが含まれます。//= require_tree

以下を追加することで、application.jsapplication.html.erbを削除//= require_treeし、コントローラー固有の JS を含めることができます。<%= javascript_include_tag "application" %>

<%= javascript_include_tag params[:controller].split("/")[0])

次に、以下を含む各コントローラーの JS ファイル ( app/assets/javascripts/CONTROLLER-NAME.js ) を作成します。

  1. //= require application
  2. コントローラー固有の JS

これらはapplication.jsに依存しますが、独自の JS を持つこともできます。

この.splitメソッドを使用すると、Devise などのコントローラーが / の前に最初の名前を .js ファイルの名前として使用できるため、 devise /sessions.jsなどの代わりにdevise.jsを作成するだけで済みます。

于 2012-12-13T03:38:42.900 に答える
0

特定のJavaScriptファイルを特定のビューページにのみ含めるには、次の手順を実行する必要があります。

i) In the assets folder create a separate folder eg. 'separate_view' , and inside put your specific js, and css files.

ii) In the application lay out write like following for 'separate_view'.
  <%= yield :separate_view %>

iii) In your target template write the following for 'separate_view'.
  <% content_for (:separate_view) do %>
    <%= javascript_include_tag "xxx.js" %>
    <%= stylesheet_link_tag "xxx.css" %>
  <%end%>

上記は、特定のビューファイルでうまくいきます。

于 2012-12-13T05:20:18.517 に答える
0

タグを使用しcontent_forて、ページ固有のコンテンツをページの先頭に追加できます。

あなたの

javascript の下のapplication.html.erb (レイアウト ファイル) に次の行を追加します。

<%= content_for :js_include %>

次に、任意のページに、ページ固有の JavaScript を含めたい

<% content_for :js_include do %>
  <%= javascript_include_tag "some_javascript_file" %>
<% end %>

javascript_include_tag に = 記号を含める必要があるかどうかはわかりません (application.html.erbファイルにそのまま配置するようにしてください。ただし、それがほとんどの要点です。content_for タグの使用

編集

役立つリンク

Railscasts エピソードのレイアウトとコンテンツ

Rails API content_for

于 2012-12-13T03:31:15.383 に答える
0

多くの方法:

<%= javascript_tag "...javascript..." %>
* Generates <script type="text/javascript">...javascript...</script>

または

<% content_for :script do %>
   ...javascript...
<% end %>
* This approach includes script into <%= yield :script %> defined in the template anywhere, for example inside the <head> dom:
<head>
  ...
  <% if content_for?(:script) %>
    <%= javascript_tag yield(:script) %>
  <% end %>

</head>

または他の多くの方法。

于 2012-12-13T03:36:40.000 に答える