看來,軌道3的方式是包括所有的JavaScript全局應用程序。我對此是否正確?正確的方式來包含在軌道中的特定頁面的JavaScript
什麼是推理?
如果我不正確,那麼包含頁面特定JavaScript的標準方法是什麼?
謝謝!
看來,軌道3的方式是包括所有的JavaScript全局應用程序。我對此是否正確?正確的方式來包含在軌道中的特定頁面的JavaScript
什麼是推理?
如果我不正確,那麼包含頁面特定JavaScript的標準方法是什麼?
謝謝!
您可以使用content_for
標記將頁面特定內容添加到頁面的頭部。
在你
application.html.erb(你的佈局文件)您的JavaScript下包括添加這樣一行
<%= content_for :js_include %>
然後在任意頁面要包括頁面特定的JavaScript你只是做
<% content_for :js_include do %>
<%= javascript_include_tag "some_javascript_file" %>
<% end %>
我不確定你是否有t o包含javascript_include_tag上的=標誌(只要確保將它放在application.html.erb
文件中,但這非常重要。使用content_for標籤
編輯
一些有用的鏈接
方法很多:
<%= 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>
或許多其他許多方式。
默認來說,Rails 3將包括的application.js包含//= require_tree
使得它依賴於所有其他的JS文件/應用/資產/ JavaScript的。
您可以通過添加以下刪除//= require_tree
在在application.html.erb的application.js和<%= javascript_include_tag "application" %>
,包括特定的控制器JS:
<%= javascript_include_tag params[:controller].split("/")[0])
然後,讓JS文件(應用/資產/ Java腳本/控制器-NAME。JS),用於容納每個控制器:
//= require application
然後,這些將取決於的application.js,但可以有自己的JS也是如此。
的.split
方法可以像設計控制器之前,用自己的名字/作爲的.js文件的文件名,所以你只需要創建devise.js,而不是色器件/ sessions.js等。
要將特定的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%>
上述內容將適用於您的特定視圖文件。