我在我的lib文件夹中下载了一个插件(http://www.datatables.net/)的javascript文件。具体来说,在app / lib / assets / javascripts / datatables / datatables.js(这是我重命名的文件jquery.dataTables.min.js,因为我认为它可能有问题,因为我试图要求整个jquery / dataTables.min)。
我的app / assets / javascripts / application.js文件中包含以下内容:
//= require jquery
//= require jquery_ujs
//= require jquery_nested_form
//= require lib/assets/javascripts/datatables
//= require_tree .
我也试过了
//= require datatables
而不是lib / assets / javascripts / datatables
我收到一个错误,Sprockets无法在c中找到文件数据表:/Sites/my-app-name/app/assets/javascripts/application.js 它似乎没有在lib / assets中查找。当我把它放在/ app / assets / javascripts目录中试用它时插件工作,但我知道这不是它应该去的地方。我也在供应商目录中尝试了它,它不起作用并且在服务器上给了我一个通知,对于Rails 4.0它需要在lib目录中。
我已经研究并尝试过修复,但失败了:
重新启动服务器(作为第一次尝试修复服务器,并且在我尝试过的每次修复之后。)
包括
config.autoload_paths + = Dir [“#{config.root} / lib / ** /”] 在/app/config/application.rb
将文件从lib / assets / javascripts / datatables.js移至lib / assets / javascripts / datatables / datatables.js
使用以下命令在lib / assests / javascripts / datatables /中创建index.js文件:
// =需要数据表 // = require_tree。
在app / javascripts / application.js中只需要文件名或需要路径。 我试过了
// =需要数据表
// = require lib / assets / javascripts / datatables
// = require / lib / assets / javascripts / datatables / datatables
当我放入/ lib / assets / javascripts / datatables / datatables时,我没有收到错误消息,并且我的页面已加载。但是,插件没有工作,如果它没有插件,该网站看起来就像它一样。这是唯一的事情(除了将.js插件文件放在app / assets / javascripts / dir中之外,根本不会改变错误消息。否则它是相同的错误消息。
我有没有想过我应该尝试的解决方案? lib是否适合它?
感谢您的帮助。
答案 0 :(得分:1)
//= require datatables/datatables
这是您在app/assets/javascripts/application.js
文件中加载lib/assets/javascripts/datatables/datatables.js
我喜欢做的是维护lib/assets/javascripts/lib.js
文件和vendor/assets/javascripts/vendor.js
文件。
在我的app/assets/javascripts/application.js
文件中,我只是
//= require vendor
//= require lib
datatables/
directectory确实属于vendor/assets/javascripts/
,而不是lib/
目录。来自 Rails Guide
lib/assets
用于您自己的库代码,它们并不真正适合应用程序的范围或跨应用程序共享的库。vendor/assets
适用于外部实体拥有的资产,例如JavaScript插件和CSS框架的代码。
移动此目录后,您可以在vendor/assets/javascripts/vendor.js
内添加
//= require datatables/datatables
最后,虽然你似乎已经做出了令人钦佩的努力来自己解决问题,但似乎你可能还没有读过资产管道上的 Rails Guide - 你呢如果你还没有,应该考虑做。