【问题标题】:rails asset pipeline asset group not precompiling datatablesrails 资产管道资产组未预编译数据表
【发布时间】:2012-07-31 22:09:22
【问题描述】:

我开始构建一个使用 jquery-datatables-rails 的 rails 项目。当我把它放到我的 Gemfile 中时,我没有把它放到资产组中。在开发中一切正常。当我将它投入生产时,我重新阅读了文档,发现它应该在资产组中,所以我将那行移到了我的 Gemfile 中。然后我执行了 rake assets:precompile 然后运行 ​​rails server -e production。

数据表不起作用。事实上,我可以让它工作的唯一方法是将该行从我的 Gemfile 中的资产组中取出并在开发模式下运行。我在互联网上阅读了很多关于此的相互矛盾的信息。

我把线路从资产组外移到资产组有什么问题吗?我希望能够在生产中运行它,并且我希望有一个与 jquery-datatables-rails 文档一致的 Gemfile。

【问题讨论】:

  • 需要有关故障模式的更多信息。如果您使用的是 WEBrick,那么它根本不会提供静态的预编译资产,除非您在 production.rb 中有 config.serve_static_assets = true。您是否在控制台中看到路由错误?当 gem 在资产组之外时,它在生产中是否可以正常工作?
  • 我正在使用 WEBrick,但在控制台中没有看到任何错误。看起来 jquery-datatables-rails 没有任何 javascript 加载。我在 production.rb 文件中将 config.serve_static_assets 设置为 true。我知道至少有一些静态资产得到了服务,因为我的资产组中有 twitter-bootstrap-rails,并且在生产中按预期工作。在我运行 rake assets:precompile 之前,我已经确认它在开发中都可以工作。那么无论哪种方式都行不通。
  • 所以总结一下,无论 gem 'jquery-datatables-rails' 是否在资产组中,它在生产中都不起作用。在我运行 rake assets:precompile 之前,它将在开发中以两种方式工作,此时无论该行是否在资产中,它都将不再工作。困惑?
  • 如果它在开发中一直有效,直到您运行rake assets:precompile,那么您如何从中恢复?删除public/assets 中的所有内容?运行该 rake 任务不应影响开发中的任何内容。如果是,则表明您的资产管道设置有问题。您是否对环境文件进行了任何其他更改?您是否尝试过制作一个简单的 Rails 测试应用程序,看看是否有同样的问题?
  • 我创建了一个应用程序只是为了将 development.rb 和 production.rb 文件与基线进行比较。开发文件中没有差异。在生产中,唯一的区别是serve_static_assets=true。实际上,我在 Github 上有这个项目目前处于半工作状态。 github.com/blackfist/CIFGlue我真的很感谢你花时间陪我做这件事。

标签: ruby-on-rails ruby-on-rails-3 datatables asset-pipeline


【解决方案1】:

不久前,为了解决我遇到的另一个问题,我在 app/assets/javascripts/application.js 中将 require twitter/bootstrap 移到了 require jquery 上方。结果,javascript 无法正常工作。将它移到正确的位置解决了问题,并且莫名其妙地没有导致旧问题再次出现。

所以解决方法是,确保 jquery 位于 application.js 文件的顶部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 2012-10-01
    • 1970-01-01
    • 2012-05-20
    • 2012-12-21
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多