Javascript 在vendor/lib目录中的Rails中包含js/css模块

Javascript 在vendor/lib目录中的Rails中包含js/css模块,javascript,ruby-on-rails,css,sprockets,Javascript,Ruby On Rails,Css,Sprockets,我有一个Rails 3.1项目,我正在尝试包含一个jQuery插件,它包含js、css和图像文件,我将它们放在vendor/assets/selected/{images、javascripts、stylesheets}下,并将index.css和index.js添加到各自的目录中 然后我尝试将插件包含在application.css和application.js中,如下所示: application.js: //= require chosen application.css

我有一个Rails 3.1项目,我正在尝试包含一个jQuery插件,它包含js、css和图像文件,我将它们放在
vendor/assets/selected/{images、javascripts、stylesheets}
下,并将index.css和index.js添加到各自的目录中

然后我尝试将插件包含在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下的页面,您至少应该能够使用lib dir(我已经尝试过,结果相同)来完成这项工作。有人有什么建议吗

更新:
当我检查assets时,rails控制台中的路径包括
供应商/assets/selected

尝试将相关路径写入插件文件。例如(这就是我如何在我的项目中包括colorpicker):

对你来说,它是这样的:

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

还要确保轨道的路径可见。(config.assets.path)

尝试将相关路径写入插件文件。例如(这就是我如何在我的项目中包括colorpicker):

对你来说,它是这样的:

//= require ../../../vendor/assets/javascripts/chosen #in application.js
*= require ../../../vendor/assets/stylesheets/chosen #application.css
还要确保轨道的路径可见。(config.assets.path)

您在application.js中添加的上述代码告诉Rails在资产路径中查找名为“selected”的文件。由于您没有名为“selected”的文件,rails会抱怨“找不到文件”,这是正确的。你需要的是一棵树

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

#application.css
*= require_tree ../../../vendor/assets/chosen/stylesheets
您在application.js中添加的上述代码告诉Rails在资产路径中查找名为“selected”的文件。由于您没有名为“selected”的文件,rails会抱怨“找不到文件”,这是正确的。你需要的是一棵树

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

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

尽管相对路径可能会起作用,但对于嵌套较深的文件,它会产生非常难看的include,我的做法应该符合rails指南的要求。抱歉,我忘了在我的帖子中提到我已经检查了assets.Path(rails控制台中的路径)和vendor/assets/Selected(供应商/资产/所选内容)。将外部Java脚本和css保存在单独的文件夹中是一个很好的做法,名为:
vendor/javascripts
vendor/stylesheets
。尝试将它们放在这些文件夹中,并在应用程序(js/css)中添加
require
语句。它应该可以工作。它们在
供应商/assets/selected
下的单独文件夹下。我确实考虑过将它们放在
供应商/资产/javascripts
供应商/资产/样式表
下,但由于它是由其他人编写的一个自包含模块,我更愿意以某种方式将文件分组在一起,以便向未来的维护人员明确这些文件属于彼此。另一种选择是将它们放在类似于
供应商/assets/javascripts/selected
的目录下,但这仍然会使它们相当分散。即使相对路径可能会工作,但对于嵌套较深的文件,它会产生非常难看的包含,我这样做的方式应该符合rails指南。抱歉,我忘了在我的帖子中提到我已经检查了assets.Path(rails控制台中的路径)和vendor/assets/Selected(供应商/资产/所选内容)。将外部Java脚本和css保存在单独的文件夹中是一个很好的做法,名为:
vendor/javascripts
vendor/stylesheets
。尝试将它们放在这些文件夹中,并在应用程序(js/css)中添加
require
语句。它应该可以工作。它们在
供应商/assets/selected
下的单独文件夹下。我确实考虑过将它们放在
供应商/资产/javascripts
供应商/资产/样式表
下,但由于它是由其他人编写的一个自包含模块,我更愿意以某种方式将文件分组在一起,以便向未来的维护人员明确这些文件属于彼此。另一种选择是将它们放在类似
vendor/assets/javascripts/selected
的目录下,但这仍然会使它们相当分散。您提到的版本在
lib
文件夹中包含一个完整的包,其中提到,为了使其正常工作,您需要在插件根目录中有一个
index.js
文件目录可能是Selected没有一个?…为什么不直接使用已经存在的rails插件呢?您提到的版本在
lib
文件夹中包含一个完整的包,该版本提到,为了使其正常工作,您需要插件根目录中的
index.js
文件。可能是Selected没有一个?…为什么不直接使用已经存在的rails插件呢?