我的样式表有:
.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"):
我在路线上尝试了很多东西,但没有任何效果。
答案 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); }