如何将ruby代码包含在content_tag中

时间:2016-07-15 06:18:52

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个带有“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" 

但它没有用,怎么决定这个问题?

3 个答案:

答案 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中删除样式标记并将其移入样式表是有意义的。