2011-12-09 48 views
6

我正在嘗試做這項工作,但這讓我很生氣。 (因爲它,而我想在這裏字符串返回一個對象.to_s)我已經設置這將供應商/資產/ javascripts添加到我的有效資產路線

application.rb中

config.assets.paths << Rails.root.join("vendor", "assets", "javascripts").to_s 

。 我無法找到解決方案,並讓我瘋狂,因爲供應商的樣式表目錄工作,但javascripts不是。

我怎樣才能做到這一點?

返回錯誤:

<h1>Routing Error</h1> 
<p><pre>No route matches [GET] &quot;/assets/ext-all-debug.js&quot;</pre></p> 

回答

5

我相信廠商已經包含在你的資產路徑,請使用軌道控制檯

rails console 
Rails.application.config.assets.paths.each do |path|; puts path; end 

但是最簡單的事情可能會在應用程序/資產/ JavaScript的/ lib這個

  • 放分機
  • require_tree將已經加載或者是明確

應用lication。JS

//= require ./lib/ext-all-debug.js 

如果你真的想在供應商

  • 創建目錄供應商/資產/ Java腳本/ EXT
  • 創建清單文件的供應商/資產/ JavaScript的/轉/ index.js
  • 對於index.js

    把EXT-ALL-debug.js爲供應商/資產/ JavaScript的/轉/

代碼爲的application.js

//= require ext 

這是該指數清單文件位於

重新啓動服務器導軌

,如果你不想要的目錄名

//= require ./ext-all-debug.js 

代碼通過application.js加載extjs,即你只想在特定頁面上包含extjs庫文件

<%= javascript_include_tag "ext" %> 
0

這並不容易從,因爲我認爲這個問題是在其他地方,你所提供的信息,請參閱該問題。

資產管道的廢話是把所有的 javascripts放到一個文件中。該文件包含在HTML文檔中。所以關鍵是一個大的JS文件。那麼,它可能會更復雜,但我認爲這不一定是你的情況。

因此,例如,在佈局ERB(通常爲app/views/layout/application.erb):

<head> 
    ... 
    <%= javascript_include_tag "application" %> 
</head> 

app/assets/javascripts/application.js

//= require ext_all_debug 
//= ... 

當請求的HTML頁面,它要求 「的application.js」,它是以供應商JS代碼嵌入到此文件中的方式生成的(請注意,在該需求中沒有路徑)。

還有一件事 - 測試生產環境中的行爲非常重要,因爲通常這些生成的JS文件將由nginx/apache提供服務。 rake assets:precompile是一個好的開始。

1

您可以添加:

//= require_tree ../../../vendor/assets/javascripts 

application.js文件。

1

讀取到更新

它看起來像問題連接到EXT有它自己的結構路徑構建相對路徑的事實。

我解決了這個問題,保持整個ext目錄結構(沒有拆分圖像),並將其添加到供應商/外部目錄(由我創建)。用// =需要EXT-ALL-debug.js

更新23/12/2013引用它

config.assets.paths << Rails.root.join("vendor", "assets", "externals").to_s 

而現在一切它的正常工作:

我然後添加路徑

從Rails 3開始,請注意這個目錄已被默認添加。

相關問題