[英]How do assets work in Rails?
我想在我的Rails應用程序中使用jQuery / Bootstrap /其他第三方js但我無法理解Rails如何在引用這些腳本方面工作。
在我的Gem文件中,我有:
gem 'jquery-rails', '4.0.3'
gem 'bootstrap-sass', '3.2.0.0'
gem 'sass-rails', '5.0.2'
我看到Rails在assets / application.js中包含以下內容
//= require jquery
//= require jquery_ujs
這是否意味着Rails將為我的應用程序的每個屏幕都包含jQuery?
如果我只想在某些屏幕上使用第三方,而不是每個屏幕,該怎么辦? 我怎么能做到這一點?
我在Rails項目的任何地方都找不到jQuery.min.js。 它位於何處? 我一直在搜索以下內容: app / assets / javascripts , vendor / assets / javascripts , lib / assets但沒有jQuery / jQuery UI腳本。
是的,它將在使用默認布局呈現的每個屏幕上包含它( app / views / layouts / application.html.erb )
jquery / sass / bootstrap css / js文件位於gems目錄中(深入ruby安裝目錄的某個位置)。 因此它們位於項目之外,sprockets從該外部目錄中提取它們。
為了避免在每個頁面上包含這些文件,您只需要創建另一個不會引用application.js文件的布局。
要在不同的頁面上使用不同的腳本來使用相同的布局,你可以使用content_for幫助器,有很多東西要改變,所以:
應用程序/視圖/布局/ application.html
# remove this
<% javascript_include_tag 'application', 'data-turbolinks-track' => true %>
# and add this
<%= yield :scripts %>
接下來在所有視圖中,您可以添加類似的內容(文件中的任何位置):
<% content_for :scripts do %>
<%= javascript_include_tag 'application' %>
<% end %>
該特定示例將僅包含對某些頁面具有依賴性的application.js,並且在其他頁面上不包含任何內容。 通常,您可以創建多個清單文件(許多類似application.js的文件。)但是如果您對sprockets不太熟悉,那么將常規js文件放入公共目錄然后包含它們會更簡單使用類似的東西:
<% content_for :scripts do %>
<script src="javascripts/jquery.js" ></script>
<script src="javascripts/pagination.js" ></script>
<% end %>
並且javascripts / jquery.js應該在您的公共目錄中可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.