[英]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.rb
或assets.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.rb
或production.rb
添加以下行:
Rails.application.config.assets.precompile << ['google-analytics.js']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.