rails之后没有路由匹配:预编译

Ves*_*nev 2 ruby-on-rails asset-pipeline

我在生产模式下运行Rails 3.2.8应用程序.在完成"rake assets:precompile"之后,我遇到了路由问题.

我的日志消息是:

ActionController::RoutingError (No route matches [GET] "/corp/assets/application-cf24b2a92e88a02835248f85a9f3c462.css"):
Run Code Online (Sandbox Code Playgroud)

此文件存在且位于当前位置.我的路线在"corp"范围内.

我的配置"config/application.rb"有选项"config.assets.enabled = true".

我的配置"config/environments/production.rb"有以下选项:

config.serve_static_assets = true
config.assets.compress = true
config.assets.compile = true
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)

应用程序在开发模式下工作正常 在那之前资产:预编译一切都很好.经过几个小时的帖子搜索,我无法找到解决问题的方法.请帮我解决这个问题!

Dip*_*hal 5

在生产模式下,Rails不负责提供静态资产.因此,您收到此错误.这由config/environment/production.rb您的应用程序中的此设置控制:

config.serve_static_assets = false
Run Code Online (Sandbox Code Playgroud)

您可以设置为true或使用Apache或Nginx等真实服务器来提供静态资产.我怀疑Pow也可能这样做.

更新

试试这个

  # Don't fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = true
  # Generate digests for assets URLs
  config.assets.digest = false
Run Code Online (Sandbox Code Playgroud)

  • config.assets.compile = true(这是不是意味着您没有使用预编译资产,因此缺少性能优势?) (2认同)