ActionController :: RoutingError(没有路由匹配“/assets/images/control_top.png”):在rails 3.2.8中

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

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

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

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

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

config.serve_static_assets = false 

你可以设置为

或试试这个

 rake assets:precompile 

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

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

不正确(使用sass):

 .class background: url('asset.png') no-repeat 

正确(使用sass):

 .class background: image-url('asset.png') no-repeat 

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

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

你必须运行这个命令

 rake assets:precompile 

我一直在使用资产管道,但是必须更改我使用的硬编码url(对于我的开发环境):

我更新了我的/config/application.rb以使用资产管道:

 config.assets.enabled = true 

我将所有图片url都更改为“/assets/image_without_old_image_directory_name.jpg”

所以例如我的图像曾经在/public/images/xxx.jpg中。 我把它们移到/app/assets/images/xxx.jpg。 我将img src从/images/xxx.jpg更改为/assets/xxx.jpg

我最终不需要进行资产预编译,只是删除了/ public和/ tmp中资产管道的所有可见方面,它只是起作用(用于开发)。