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中资产管道的所有可见方面,它只是起作用(用于开发)。