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

Mic*_*ant 2 routes get ruby-on-rails image ruby-on-rails-3

我的样式表有:
.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"):

我在路线上尝试了很多东西,但没有任何效果.在此输入图像描述

mu *_*ort 6

试试这个:

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

这就是我在我正在开发的3.1应用程序中的方式.您/images可能已映射到app/public/images.


Mic*_*ant 6

终于发现我需要做一个新的资产预编译步骤."我应该阅读手册"

默认情况下,编译资产放在public/assets目录中(目标定义于config.assets.prefix).

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

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

资产编制过程:

1.将所有JavaScript文件连接并压缩为一个主文件.Uglifier是该过程的默认值.
2将所有CSS文件压缩(缩小)为一个主.css文件.默认情况下,CSS由yui压缩.
3.允许像coffeescript这样的高级语言使用资产.

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

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

您也可以设置config.assets.compile = true这种方式,只有在对资产进行请求时才会编译资产.