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

时间:2015-07-15 11:14:29

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline

我试图将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后,源代码包括:<script src="/javascripts/google-analytics.js"></script>。但它无法找到javascript文件,即,如果我在源代码中单击此链接,则会生成404错误页面。我做错了什么?

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

直接在文件夹/public/assets/google-analytics.js中包含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.

0 个答案:

没有答案