ActionController :: RoutingError(没有路由匹配[GET]"/assets/images/control_top.png"):在rails 3.2.8中

Ina*_*ble 19 ruby-on-rails

背景图片未在我的视图页面中上传.显示此错误.

ActionController :: RoutingError(没有路由匹配[GET]"/assets/images/control_top.png")

我该怎么做才能解决这个问题?

Sac*_*n R 24

在生产环境中,Rails不负责提供静态资产.因此,您收到此错误.

这由应用程序中config/environment/production.rb中的此设置控制:

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

你可以设置为

或试试这个

rake assets:precompile 
Run Code Online (Sandbox Code Playgroud)

命令(编译和复制图像,css和js从app/assets到public /.

  • Rails 4中的`config.serve_static_files` (3认同)

Aar*_*ray 22

如果你升级到Rails的新版本(Rails 4和Rails 3.2.16),你突然开始看到这个错误,你的样式表可能指向非指纹,非缓存版本文件.如果您正在使用资产管道,为了利用它,您需要使用指向文档的指纹缓存版本的新助手.为此,您需要在您的css文件中嵌入erb,或者使用sass.

不正确(使用sass):

.class
  background: url('asset.png') no-repeat
Run Code Online (Sandbox Code Playgroud)

正确(使用sass):

.class
  background: image-url('asset.png') no-repeat
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此处:http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets

  • 升级到Rails 3.2.16之后,这就是我,所以它不仅仅是4.x. (2认同)

Caf*_*der 7

可能会帮助别人,我尝试了所有的答案,忘记了最基本的事情.清除浏览器缓存,一旦完成我很高兴去:)


Asn*_*tta 6

你必须运行这个命令

rake assets:precompile
Run Code Online (Sandbox Code Playgroud)