Ruby on rails 3 Rails 3.1资产在ActiveAdmin的生产中未正确加载

Ruby on rails 3 Rails 3.1资产在ActiveAdmin的生产中未正确加载,ruby-on-rails-3,ruby-on-rails-3.1,gem,asset-pipeline,activeadmin,Ruby On Rails 3,Ruby On Rails 3.1,Gem,Asset Pipeline,Activeadmin,我正在使用Rails 3.1。这个gem使用的唯一图像(我知道)是表头行中的排序箭头。在开发过程中,CSS正确地引用了这些图像: table.index_table th.sortable a { background: url("/assets/active_admin/orderable.png") no-repeat 0 4px; padding-left: 13px; } 在生产中,CSS没有正确引用这些图像,导致404: table.index_table th.so

我正在使用Rails 3.1。这个gem使用的唯一图像(我知道)是表头行中的排序箭头。在开发过程中,CSS正确地引用了这些图像:

table.index_table th.sortable a {
    background: url("/assets/active_admin/orderable.png") no-repeat 0 4px;
    padding-left: 13px;
}
在生产中,CSS没有正确引用这些图像,导致404:

table.index_table th.sortable a {
    background: url("/images/active_admin/orderable.png") no-repeat 0 4px;
    padding-left: 13px;
}
以下是我的Gemfile中的相关内容:

gem 'rails', '3.1.1'

group :assets do
  gem 'sass-rails', '~> 3.1.0'
  gem 'coffee-rails', '~> 3.1.0'
  gem 'uglifier'
end

gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git'

您必须使用图像url而不是url。在生产环境中,Rails 3.1为所有图像设置哈希。这样,您可以在部署后轻松地使它们过期。这是一个很好的特性,因为浏览器可以像这样更好地缓存资产。您应该使用的代码:

table.index_table th.sortable a {
  background: image-url("active_admin/orderable.png") no-repeat 0 4px;
  padding-left: 13px;
}
Rails 3.1将digets放在所有资产中,因为这个变量是在production.rb中设置的

config.assets.digest = true
你也可以将其设置为false,但我不建议这样做

如果您无法访问active\u admin的css,则必须将active\u admin升级到最新版本,然后重试。

为此,ActiveAdmin git存储库出现了一个链接。解决方案(对我来说)是将我的sass-railsgem升级到3.1.4

gem 'rails', '3.1.1'

group :assets do
  gem 'sass-rails', '~> 3.1.4'
  gem 'coffee-rails', '~> 3.1.0'
  gem 'uglifier'
end

gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git'