我有一个带有“td”的content_tag,我必须在ruby上写一些代码。我用以下方式写道:
content_tag :td, class: "text-right<%= ' text-danger' if section.sum_control != (section.sum_self_summary + section.sum_sub_summary) %>", style: "width: 150px"
但它没有用,怎么决定这个问题?
答案 0 :(得分:2)
<form accept-charset="ISO-8859-1">
您的内容标记是否在&lt;%=%&gt;内,如果是,那么我认为您应该使用插值#{}来表示条件
答案 1 :(得分:2)
可能你应该这样做
cls = section.sum_control != (section.sum_self_summary + section.sum_sub_summary) ? 'text-right text-danger' : 'text-right'
content_tag(:td, class: cls, style: 'width: 150px')
希望这是有帮助的
答案 2 :(得分:0)
我会在模型中添加一个方法来确定其状态,因为IMO视图不应包含依赖于模型属性的复杂条件:
# in the Section model
def sums_ok?
sum_control == (sum_self_summary + sum_sub_summary)
end
帮助器确定css类的方法:
def css_class_for_section(section)
css = ['text-right']
css << 'text-danger' unless section.sums_ok?
css.join(' ')
end
比content_tag
看起来像:
content_tag(:td, class: css_class_for_section(section), style: 'width: 150px')
此外,我认为从td
中删除样式标记并将其移入样式表是有意义的。