如果模型满足以下条件,我希望在索引页面上以红色显示一行:updated = true。我如何使用activeadmin来做到这一点?
Thx
发布于 2015-06-27 19:19:55
从Active Admin 1.0.0pre1开始,可以根据该行记录的属性指定行类。要将一个类分配给具有更新记录的行,可以编写以下代码,假设您有一些更新检查函数was_updated?
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
这个新选项在indexing as a table.的源代码中有注释
然而,Active Admin的SCSS在指定表行(或者更确切地说,是表数据)颜色时使用了大量的specificity,这使得它们无法通过在样式表中编写.my-class { background-color: red; }
来覆盖自定义颜色。不过,我发现以下方法是可行的:
app/assets/stylesheets/active_admin.css.scss
...
tr.odd, tr.even {
&.my-class {
td.col {
background-color: red;
}
}
}
发布于 2012-09-20 22:06:46
活动管理的表呈现在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
因此,最简单的方法可能是使用monkeypatch方法。我看不出子类化是否有帮助。
发布于 2013-09-22 15:39:45
如果你只是想要一些快速的东西,并且不需要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‘中定义这些类
https://stackoverflow.com/questions/12520114
复制