Rails 3.1资产在ActiveAdmin的生产中未正确加载

时间:2011-11-02 23:14:33

标签: ruby-on-rails-3 ruby-on-rails-3.1 gem asset-pipeline activeadmin

我在Rails 3.1中使用ActiveAdmin。这个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'

2 个答案:

答案 0 :(得分:0)

您必须使用image-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_admin的css,则必须将active_admin升级到最新版本,然后重试。

答案 1 :(得分:0)

最终成为ActiveAdmin git存储库的issue submitted。解决方案(对我来说)是将我的sass-rails gem升级到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'