2012-02-17 73 views
2

我有一個Rails 3.1項目,我試圖包括一個jQuery,CSS和圖像文件的jQuery插件,我已經把它們放在vendor/assets/chosen/{images,javascripts,stylesheets}和i已經將index.css和index.js添加到各自的dirs中。包含js/css模塊在供應商/ lib目錄中的Rails

然後我嘗試包括application.css插件和的application.js本:

的application.js:

//= require chosen 

application.css

/* 
    *= require chosen 
    */ 

但是,當我加載頁面我得到這個錯誤:

couldn't find file 'chosen' 
    (in /..../app/assets/stylesheets/screen.css:8) 

根據2.1.2中的this頁面,您應該至少可以使用lib目錄(我嘗試過,結果相同)。任何人有任何提示?

更新: 當我檢查assets.paths在軌道控制檯vendor/assets/chosen是包括在內。

+0

你提到,包括在'lib'文件夾中的全包的版本提到,爲了使這種工作,你需要一個'index.js'文件中的插件根目錄。難道是選擇了沒有? – Frost 2012-02-22 10:54:41

+0

...爲什麼不直接使用現有的rails插件呢? https://github.com/bseanvt/chosen_rails – Frost 2012-02-22 10:56:57

回答

0

嘗試將相關路徑寫入您的插件文件。例如(這就是我包含在我的項目的ColorPicker):

//= require ../../../vendor/assets/javascripts/colorpicker #in application.js 
*= require ../../../vendor/assets/stylesheets/colorpicker #in application.css 

而且對你來說會是這樣的:

//= require ../../../vendor/assets/javascripts/chosen #in application.js 
*= require ../../../vendor/assets/stylesheets/chosen #application.css 

另外,還要確保你的路徑是爲Rails可見。在資產路徑(config.assets.paths)

+0

即使相對路徑可能工作這讓非常難看包括深度嵌套的文件,我做它應該根據導軌導向的工作方式。 對不起,在我的文章中忘記提及我已經在rails控制檯中檢查assets.paths,供應商/資產/選擇包含在那裏。 – Andreas 2012-02-17 17:02:48

+0

將外部javascript和css保存在單獨的文件夾中,名稱爲'vendor/javascripts'和'vendor/stylesheets'是一個好習慣。嘗試將它們放入這些文件夾中並在應用程序中添加'require'語句(js/css)。它應該工作。 – bor1s 2012-02-17 17:06:20

+0

它們位於'vendor/assets/chosen'下的獨立文件夾下。我沒想到把它們放在'供應商/資產/ javascripts'和'供應商/資產/ stylesheets'但因爲它是別人寫的一個自包含的模塊,我寧願繼續以某種方式說清楚組合在一起的文件給未來的維護者,這些文件是相互之間的。另一種選擇是將它們置於'vendor/assets/javascripts/selected'之類的東西之下,但這仍然會使它們相當分散。 – Andreas 2012-02-17 17:13:24

0
//= require chosen 

您在application.js中添加告訴Rails查找一個文件名爲上面的代碼「選擇」。既然你沒有一個名爲「selected」的文件,rails會抱怨「沒有找到文件」,這是正確的。你需要的是require_tree

#application.js 
//= require_tree ../../../vendor/assets/chosen/javascripts 

#application.css 
*= require_tree ../../../vendor/assets/chosen/stylesheets