rails3.1 ActionController :: RoutingError(没有路由匹配[GET]“/ images / up_arrow.gif”):

时间:2011-09-24 23:37:48

标签: ruby-on-rails ruby-on-rails-3 image get routes

我的样式表有:
.asc { font-size: 2em; background-image: url(/images/up_arrow.gif); }
.desc { background-image: url(/images/down_arrow.gif); }

字体大小有效,但背景图像(箭头)没有。 我得到ActionController::RoutingError (No route matches [GET] "/images/up_arrow.gif"):

我在路线上尝试了很多东西,但没有任何效果。enter image description here

4 个答案:

答案 0 :(得分:6)

试试这个:

.asc { font-size: 2em; background-image: url(/assets/up_arrow.gif); }
.desc { background-image: url(/assets/down_arrow.gif); }

这就是我在3.1应用程序中执行此操作的方法。您的/images可能已映射到app/public/images

答案 1 :(得分:6)

最后发现我需要做一个新的资产预编译步骤。 “我应该阅读手册'

默认情况下,编译资产放在公共/资产目录中(目的地在config.assets.prefix)中定义。

要创建资产的编译版本,请使用bundle exec rake assets:precompile

如果您没有生产文件系统的写入权限,请在本地使用此任务,然后复制已编译的资产文件。

资产编制过程:

1。 Concatenates&将所有JavaScript文件压缩为一个主文件。 Uglifier是此过程的默认值   2 将所有CSS文件压缩(缩小)为一个主.css文件。默认情况下,CSS会被yui压缩   3. 允许像coffeescript这样的高级语言使用资源。

注意:通过更改config / application.rb并设置
来禁用资产管道是可能的(尽管不是一个好主意) config.assets.enabled = false

使用—skip-sprockets option创建新应用时,您可以跳过资产管道,例如rails new appname --skip-sprockets

您也可以设置config.assets.compile = true这样,只有在对资产提出请求时才会编译资产。

答案 2 :(得分:2)

也许是愚蠢的问题,但你对/images/up_arrow.gif存在感到肯定吗?

当你在其中的公共资产上的404刚刚落入rails路由器时。这不是一个真正的路由问题;你只是得到一个路由错误,因为没有为静态资产定义路由。

答案 3 :(得分:0)

我在Rails 3.2.13中遇到了同样的问题。

解决方法是将css修改为:

.asc { font-size: 2em; background-image: url(up_arrow.gif); }
.desc { background-image: url(down_arrow.gif); }