使用activeadmin创建一行颜色

Seb*_*ien 3 ruby-on-rails ruby-on-rails-3 activeadmin

如果模型具有:updated = true,我想在索引页面上以红色显示一行.我怎么能用activeadmin做到这一点?

谢谢

feb*_*Ink 11

从Active Admin 1.0.0pre1开始,可以根据该行中记录的属性指定行类.要将类分配给具有更新记录的行,您可以编写以下内容,假设您有一些更新检查功能was_updated?:

应用程序/管理/ my_model.rb

ActiveAdmin.register MyModel do

    ...

    index(:row_class => -> record { 'my-class' if record.was_updated? }) do

      # whatever columns you want:
      # selectable_column
      # id_column
      # column :attribute
      # actions
    end

    ...

end
Run Code Online (Sandbox Code Playgroud)

这个新选项在源代码中被注释为索引作为表.

但是,Active Admin的SCSS 在指定表行(或更确切地说,表数据)颜色时使用了很多特性,因此只需.my-class { background-color: red; }在样式表中写入就无法使用自定义颜色覆盖它们.但我发现以下内容可以使用:

应用程序/资产/样式表/ active_admin.css.scss

...

tr.odd, tr.even {
    &.my-class {
        td.col {
            background-color: red;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


she*_*run 3

Active Admin 的表格呈现硬核如下ActiveAdmin::Views::TableFor

  def build_table_body
    @tbody = tbody do
      # Build enough rows for our collection
      @collection.each{|_| tr(:class => cycle('odd', 'even'), :id => dom_id(_)) }
    end
  end
Run Code Online (Sandbox Code Playgroud)

因此,最简单的方法可能是对该方法进行猴子修补。我不知道子类化是否有帮助。