Ruby on rails 使用activeadmin以彩色创建一行
如果模型具有:updated=true,我希望在索引页上显示一行红色。如何使用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('
在
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;
}
}
}