簡體   English   中英

資產如何在Rails中運行?

[英]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 / javascriptsvendor / assets / javascriptslib / assets但沒有jQuery / jQuery UI腳本。

  1. 是的,它將在使用默認布局呈現的每個屏幕上包含它( app / views / layouts / application.html.erb

  2. jquery / sass / bootstrap css / js文件位於gems目錄中(深入ruby安裝目錄的某個位置)。 因此它們位於項目之外,sprockets從該外部目錄中提取它們。

  3. 為了避免在每個頁面上包含這些文件,您只需要創建另一個不會引用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM