繁体   English   中英

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

[英]Javascript asset pipeline: 404 error - How to include Google analytics code in Rails?

我正在尝试将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一起使用?

将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.

您已启用资产管道?

然后包括

//= require google-analytics.js

application.js文件中,然后运行

rake assets:precompile

在生产服务器上,然后重新启动Rails应用程序并进行检查。

Rails系统需要知道该文件的预编译。 默认情况下,它与application.js一起application.js但是如果您创建一个新的清单文件,则必须包含它。

config/initializers/assets.rbproduction.rb添加以下行:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM