1

我在我的 lib 文件夹中下载了一个插件 ( http://www.datatables.net/ ) 的 javascript 文件。具体来说,在 app/lib/assets/javascripts/datatables/datatables.js (这是我重命名的文件 jquery.dataTables.min.js ,因为我认为它可能有问题,因为我试图要求整个 jquery/数据表.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/**/"] in /app/config/application.rb

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

  4. 在 lib/assets/javascripts/datatables/ 中创建一个 index.js 文件,内容如下:

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

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

    //= 需要数据表

    //= 需要 lib/assets/javascripts/datatables

    //= 需要 /lib/assets/javascripts/datatables/datatables

当我输入 /lib/assets/javascripts/datatables/datatables 时,我没有收到错误消息,并且我的页面已加载。但是,该插件无法正常工作,该网站看起来就像没有插件一样。这是唯一的事情(除了将 .js 插件文件放在 app/assets/javascripts/ 目录中,它完全改变了错误消息。否则它是相同的错误消息。

有没有我没有想到我应该尝试的解决方案?lib是合适的地方吗?

感谢您的任何帮助。

4

1 回答 1

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/目录确实属于vendor/assets/javascripts/,而不是您的lib/目录。来自Rails 指南

  • lib/assets适用于您自己的库的代码,这些代码并不真正适合应用程序的范围或跨应用程序共享的那些库。
  • vendor/assets适用于外部实体拥有的资产,例如 JavaScript 插件和 CSS 框架的代码。

移动此目录后,vendor/assets/javascripts/vendor.js您可以在其中添加

//= require datatables/datatables

最后,尽管您似乎已经为自己解决问题做出了令人钦佩的努力,但您似乎还没有通读资产管道上的Rails 指南——如果您还没有阅读,您应该考虑这样做。

于 2013-06-26T19:37:07.013 回答