21

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

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

我能做些什么来解决这个问题?

4

5 回答 5

27

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

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

config.serve_static_assets = false

你可以设置为

或试试这个

rake assets:precompile 

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

于 2013-01-25T10:42:45.990 回答
25

如果您升级到新版本的 Rails(想到 Rails 4 和 Rails 3.2.16),突然开始看到这个错误,很可能您的样式表指向的是非指纹、非缓存版本的文件。如果您正在使用资产管道,为了利用它,您需要使用指向文件的指纹缓存版本的新帮助程序。为此,您需要将 erb 嵌入到您的 css 文件中,或者使用 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

于 2013-07-15T02:22:02.523 回答
7

可能对某人有所帮助,我尝试了所有答案,却忘记了最基本的事情要做。清除浏览器缓存,一旦完成,我就可以走了:)

于 2014-05-05T06:31:39.757 回答
6

你必须运行这个命令

rake assets:precompile
于 2014-02-17T12:27:17.647 回答
2

我继续使用资产管道,但必须更改我使用的硬编码 url,如下所示(对于我的开发环境):

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

config.assets.enabled = true

我将所有图片网址更改为指向“/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 中资产管道的所有可见方面,它就可以正常工作(用于开发)。

于 2016-10-22T12:37:49.917 回答