Ruby on rails 使用activeadmin以彩色创建一行

Ruby on rails 使用activeadmin以彩色创建一行,ruby-on-rails,ruby-on-rails-3,activeadmin,Ruby On Rails,Ruby On Rails 3,Activeadmin,如果模型具有:updated=true,我希望在索引页上显示一行红色。如何使用activeadmin实现这一点 在ActiveAdmin::Views::TableFor中,活动管理的Thx表呈现是硬内核的,如下所示: def build_table_body @tbody = tbody do # Build enough rows for our collection @collection.each{|_| tr(:class => cycle('

如果模型具有:updated=true,我希望在索引页上显示一行红色。如何使用activeadmin实现这一点


ActiveAdmin::Views::TableFor
中,活动管理的Thx

表呈现是硬内核的,如下所示:

  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

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

我也想这样做,我发现最简单的方法就是使用JavaScript 当然,这不是一个好的解决方案,因为我使用的是tags\classes\id,ActiveAdmin呈现可以在下一个版本中完全更改。。。 但是,如果您添加几个测试用例,可能就足够了

例如,我想根据每一行的评级列给每一行上色

所以我把这段代码放在文件中:A.js(当然在app\assets\javascripts下)

//A.js
$(文档).ready(函数(){
$('td.rating')。每个(功能(i,obj){
var rating=parseInt(obj.innerHTML);
如果(!isNaN(额定值))
{
var rowcolor=“”
如果(评级javascript_路径('A.js'),:type=>“text/javascript”
结束
结束
因此,在呈现索引之后,我的JS函数将根据评级列值对所有行进行着色(红色表示0..4,黄色表示5..10)


希望这能对你有所帮助,如果你只是想要一些快捷的东西,并且不需要使用monkeypatching Activeadmin,你能不能把div放在你的桌子里?比如f ex

table_for invoice.ccpayment do
  column 'Payments and payments attempts on this invoice: ' do |p|
    if p.paymentcomplete > 0
      div :class => 'green' do
        'Payment # '+p.id.to_s+' of '+p.currency.iso+' '+p.amount.to_s+' on '+p.created_at.to_s
      end
    else
      div :class => 'red' do
        'FAILED Payment # '+p.id.to_s+' of '+p.currency.iso+' '+p.amount.to_s+' on '+p.created_at.to_s
      end
    end
  end
end 

您可以在“activeadmin.css.scss”中轻松定义这些类。

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

app/admin/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
此新选项在的源代码中有注释

然而,Active Admin的SCS在指定表行(或者更确切地说,表数据)颜色时使用了很多颜色,这使得它们不可能通过在样式表中写入
.my class{background color:red;}
来用自定义颜色覆盖

app/assets/stylesheets/active_admin.css.scss

...

tr.odd, tr.even {
    &.my-class {
        td.col {
            background-color: red;
        }
    }
}

尽管这不会更新整行,但作为替代更新,可能会很方便。
背景色:红色!重要;
应该可以工作,而不必过度指定选择器。
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
...

tr.odd, tr.even {
    &.my-class {
        td.col {
            background-color: red;
        }
    }
}