2012-04-18 120 views
17

我注意到,当我部署到Heroku时,JavaScript功能不工作(如Bo​​otstrap Popover,Buttons等)。我正在使用rails 3.2.2,ruby 1.9.3。这些功能在localhost上运行。部署到Heroku时似乎没有显示错误(功能根本不显示)。Javascript功能在本地主机上工作,但不在部署到Heroku时

任何想法?谢谢!

+0

如果你放入一些console.log行,你会得到什么吗? – jimw 2012-04-18 18:14:59

+1

我对Heroku一无所知(第一次听过这个名字),但是JavaScript是在客户端执行的。所以只要你使用相同的浏览器和JavaScript代码是相同的,你应该得到相同的行为。尝试查看源代码(从右键单击菜单或浏览器中的“编辑”菜单)以查看两种情况并比较差异。 – Travesty3 2012-04-18 18:17:33

+0

JavaScript文件是否正确拉出(Firebug说什么)?如果是这样,你有任何特定于localhost域的代码吗? – Igor 2012-04-18 18:17:47

回答

1

我也有类似的问题,但问题也发生在localhost上。

您可能正在使用rails-bootstrap gem。它安装一个文件bootstrap.coffee.js这个文件是罪魁祸首。它有.popover使用和相关的插件不包括在内。我评论说,因为我没有使用它,但你应该考虑包括popover插件的引导。

+0

我遵循你所说的和只要我删除了我的咖啡文件,所有工作,但我想知道**你有任何来源支持您的索赔?** – 2017-08-30 01:41:47

6

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

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

对于JavaScript的在开发工作,“需要的jquery”是后需要“的要求叽叽喳喳/引导。”在生产中,jquery需要先来。不知道是什么导致了这种情况,但现在在部署到Heroku时起作用。

我用这两个职位:

javascript - Twitter bootstrap jquery plugins not compiled for production

twitter bootstrap drop down suddenly not working

+0

Rails 4.2.5更新: // =要求jquery // =要求jquery_ujs // =需要引导 // =需要角 // = requi re'leaflet.js' // =需要传单 // = require_tree。 下拉菜单可以在Heroku上运行,但引导程序需要在本地主机上运行。 有没有办法解决这个问题,或者至少在不改变application.js的情况下在Heroku和localhost上工作? PS:似乎无法格式化评论。 – Greg 2016-03-30 20:14:40

11

手动预编译为我工作。

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

+0

这似乎是要走的路,如果你手动包括bootstrap.js和bootstrap.css而不是使用gem – eziegl 2014-05-28 01:15:53

+0

heroku对你来说这么做 – 2017-08-30 01:42:04

5

检查您的production.rb文件。我相信该行必须是:

config.assets.compile = true 

我相信这被默认设置为false。

+0

警告:Richard Hulse建议不要在这里打开它:http:// stackoverflow。 COM /问题/ 8821864 /配置资产 - 编译 - 真在护栏 - 生产 - 为什么 - 不 – Alex 2016-07-02 18:08:27

2

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

1

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

确保只有bootstrapboostrap-sprockets一个在你的JavaScript资产

从文档中声明:

bootstrap-sprockets and bootstrap should not both be included in application.js.

bootstrap-sprockets provides individual Bootstrap Javascript files (alert.js or dropdown.js, for example), while bootstrap provides a concatenated file containing all Bootstrap Javascripts.

Be sure that only one of bootstrap and bootstrap sprockets

参考文献:bootstrap-sass github issuehere

-1

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

相关问题