2015-11-05 73 views
3

我想在我的Rails應用程序中使用jQuery/Bootstrap /其他第三方js,但我無法理解Rails如何根據它如何引用這些腳本工作。資產如何在Rails中工作?

在我的寶石文件我有:

gem 'jquery-rails', '4.0.3' 
gem 'bootstrap-sass', '3.2.0.0' 
gem 'sass-rails',  '5.0.2' 

,我看到Rails包含在資產以下/ application.js中

//= require jquery 
//= require jquery_ujs 

這是否意味着Rails會包括jQuery的每一個畫面我的應用程序有?

如果我想僅針對某些屏幕使用第三方,而不是每個屏幕我該如何做到這一點?

而我在Rails項目的任何地方都找不到jQuery.min.js。它在哪裏位於?我一直在尋找在以下幾點:應用程序/資產/ JavaScript的供應商/資產/ JavaScript的的lib /資產但沒有的jQuery/jQuery UI的腳本。

回答

1
  1. 是它將包括它(應用/視圖/佈局/ application.html.erb

  2. 了jQuery/SASS /自舉的CSS/JS使用缺省佈局呈現每一單個屏幕上文件存在於gem目錄中(深入ruby安裝目錄的某個地方)。所以它們不在你的項目中,並且鏈輪從外部目錄中提取它們。

  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文件)。但是,如果您對鏈輪不太熟悉,只需將常規js文件放入公共目錄,然後將它們包含在內使用類似:

<% content_for :scripts do %> 
    <script src="javascripts/jquery.js" ></script> 
    <script src="javascripts/pagination.js" ></script> 
<% end %> 

而且的JavaScript/jquery.js和應該在你的公共目錄中。

+0

因此,基本上,對於第三方(如分頁表,我不需要它在每個屏幕上)我應該手動將腳本複製到我的rails項目,以便我可以引用腳本標記?但通過這種方法,我總是必須手動更新每個第三方,這根本不行。創建一個新的佈局聽起來對我來說不是一個好主意。也許我想要像目前的佈局,但使用不同的JavaScript的相同的HTML結構,併爲此新的佈局將不值得 –

+0

如果你看看application.html.erb裏面有一段代碼'javascript_include_tag'application', 'data-turbolinks-track'=> true'。它將* application.js *添加到頁面上的所有依賴項中。您可以用任何自定義邏輯來替換該行,該行只會導入您需要的腳本。 –

+2

您還可以瞭解'content_for' rails helper,它可用於指定要在視圖中導入的腳本而不是佈局。 –

相關問題