20

我注意到,当我部署到 Heroku 时,javascript 功能不起作用(例如 Bootstrap Popover、Buttons 等)。我正在使用 rails 3.2.2,ruby 1.9.3。这些功能在本地主机上工作。部署到 Heroku 时似乎没有显示任何错误(这些功能根本不显示)。

有任何想法吗?谢谢!

4

8 回答 8

15

手动预编译对我有用。

bundle exec rake assets:precompile在你推到heroku之前。

于 2013-01-05T20:54:02.980 回答
6

我有完全相同的问题(我对 Rails 很陌生)。我最终通过重新排列 application.js 中文件的顺序解决了这个问题:

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap

为了使 javascript 在开发中工作,“require jquery”需要在“require twitter/bootstrap”之后。在生产中,jquery 需要放在第一位。不确定是什么原因造成的,但现在部署到 Heroku 时它可以工作。

我用了这两个帖子:

javascript - 未为生产编译的 Twitter 引导 jquery 插件

twitter bootstrap下拉突然不起作用

于 2012-06-27T19:25:28.510 回答
5

检查您的 production.rb 文件。我相信这条线需要是:

config.assets.compile = true

我相信这默认设置为 false 。

于 2013-08-03T05:07:51.850 回答
2

请记住,您通常在 localhost 上执行的所有操作都必须使用 heroku。确保你heroku run rake assets:precompile.

于 2014-09-16T18:32:26.903 回答
1

我也有类似的问题,但问题也发生在本地主机上。

您可能正在使用 rails-bootstrap gem。它安装了一个文件 bootstrap.coffee.js 这个文件是罪魁祸首。它使用了 .popover 并且不包括相关插件。我对此进行了评论,因为无论如何我都没有使用它,但是您应该考虑包括用于引导的 popover 插件。

于 2012-04-30T21:22:32.860 回答
1

检查了我的应用程序的缩小 js,并且 popover 在文件中出现了两次。

确保在您的 javascript 资产中仅声明bootstrap和之一boostrap-sprockets

从文档:

bootstrap-sprockets 和 bootstrap 不应同时包含在 application.js 中。

bootstrap-sprockets 提供单独的 Bootstrap Javascript 文件(例如,alert.js 或 dropdown.js),而 bootstrap 提供包含所有 Bootstrap Javascript 的串联文件。

确保只有自举链轮和自举链轮之一

参考:bootstrap-sass github 问题此处

于 2015-05-09T02:39:20.157 回答
0

更新链轮对我有用:bundle update sprockets

于 2018-08-24T04:47:57.727 回答
-1

如果您已经尝试过heroku run rake assets:precompile,但 JS 仍然无法正常工作,请尝试heroku restart在预编译资产后重新启动服务器。

于 2017-09-15T22:21:36.920 回答