无法在lib中找到app / assets中的插件

时间:2013-06-26 19:28:44

标签: jquery ruby-on-rails plugins

我在我的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目录中。

我已经研究并尝试过修复,但失败了:

  1. 重新启动服务器(作为第一次尝试修复服务器,并且在我尝试过的每次修复之后。)

  2. 包括

    config.autoload_paths + = Dir [“#{config.root} / lib / ** /”] 在/app/config/application.rb

  3. 将文件从lib / assets / javascripts / datatables.js移至lib / assets / javascripts / datatables / datatables.js

  4. 使用以下命令在lib / assests / javascripts / datatables /中创建index.js文件:

    // =需要数据表 // = require_tree。

  5. 在app / javascripts / application.js中只需要文件名或需要路径。 我试过了

    // =需要数据表

    // = require lib / assets / javascripts / datatables

    // = require / lib / assets / javascripts / datatables / datatables

  6. 当我放入/ lib / assets / javascripts / datatables / datatables时,我没有收到错误消息,并且我的页面已加载。但是,插件没有工作,如果它没有插件,该网站看起来就像它一样。这是唯一的事情(除了将.js插件文件放在app / assets / javascripts / dir中之外,根本不会改变错误消息。否则它是相同的错误消息。

    我有没有想过我应该尝试的解决方案? lib是否适合它?

    感谢您的帮助。

1 个答案:

答案 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 - 你呢如果你还没有,应该考虑做。