Javascript资产管道:404错误 – 如何在Rails中包含Google分析代码?

我正在尝试将Google Analytics包含在我的Rails应用中,但是Rails的资产管道存在问题。

我创建了一个新文件( app/assets/javascripts/google-analytics.js ),其中包含了Google提供的Javascript代码。 对于application.html.erb我添加了一行: javascript_include_tag 'google-analytics' if Rails.env.production?

不幸的是,它在生产中不起作用。 推送到Heroku后,源代码包括: 。 但它无法找到javascript文件,即,如果我在源代码中单击此链接,则会生成404错误页面。 我究竟做错了什么?


更新:如果我将Rails.application.config.assets.precompile += ['google-analytics.js']production.rb它会起作用。 如果我将此行添加到assets.rb而不是production.rb它现在可以工作。 我宁愿把它放在assets.rb以保持整洁。 有谁知道为什么它不使用assets.rb

是否可以直接将JS文件包含在/public/assets/google-analytics.js文件夹中? 然后我不需要在/app/assets/javascripts/google-analytics.js包含该文件,我不需要production.rbassets.rb的预编译行?


更新前的Heroku日志尾:

 heroku[router]: at=info method=GET path="/assets/application-1d520c66bc88***583e462611.css" host=***.herokuapp.com request_id=*** fwd="***" dyno=web.1 connect=0ms service=2ms status=304 bytes=93 heroku[router]: at=info method=GET path="/assets/application-2b1c01f66fb87e***bd707657bc1acf7.js" host=***.herokuapp.com request_id=*** fwd="***" dyno=web.1 connect=1ms service=2ms status=304 bytes=93 heroku[router]: at=info method=GET path="/javascripts/google-analytics.js" host=***.herokuapp.com request_id=*** fwd="***" dyno=web.1 connect=1ms service=4ms status=404 bytes=1708 app[web.1]: Started GET "/javascripts/google-analytics.js" for *** at 2015-07-15 11:11:23 +0000 app[web.1]: ActionController::RoutingError (No route matches [GET] "/javascripts/google-analytics.js"): app[web.1]: vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' etc. 

你必须告诉Rails预编译该文件。 默认情况下,它适用于application.js,但如果您创建新的清单文件,则必须包含它。 在config / initializers / assets.rb或production.rb中

加:

Rails.application.config.assets.precompile << ['google-analytics.js']

希望能帮助到你。

您是否启用了资产管道?

然后包括

 //= require google-analytics.js 

application.js文件中然后运行

 rake assets:precompile 

在生产服务器上重新启动rails应用程序并检查。