【问题标题】:Rails 3.1 assets not loading properly in production for ActiveAdminRails 3.1 资产无法在 ActiveAdmin 的生产环境中正确加载
【发布时间】:2011-11-02 23:14:32
【问题描述】:

我在 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'

【问题讨论】:

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


    【解决方案1】:

    您必须使用 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 将数字放入所有资产中,因为这个变量是在 production.rb 中设置的

    config.assets.digest = true
    

    您也可以将其设置为 false,但我不建议这样做。

    如果您无法触摸 active_admin 的 css,则必须将 active_admin 升级到最新版本并重试。

    【讨论】:

      【解决方案2】:

      为此,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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        相关资源
        最近更新 更多