2016-07-15 42 views
1

我有content_tag與「TD」,我必須在紅寶石上編寫代碼。我用下面的方式寫了:我如何包含紅寶石代碼content_tag

content_tag :td, class: "text-right<%= ' text-danger' if section.sum_control != (section.sum_self_summary + section.sum_sub_summary) %>", style: "width: 150px" 

但是沒有工作,怎麼決定這個問題呢?

回答

0

我會添加一個方法來確定其狀態,因爲國際海事組織視圖不應該包含依賴於模型屬性的複雜條件:

# 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標記並將其移入樣式表。

2
content_tag :td, class: "text-right#{ ' text-danger' if section.sum_control != (section.sum_self_summary + section.sum_sub_summary) }", style: "width: 150px" 

是您的內容標籤裏面<%=%>,如果是的話,我認爲你應該使用插值#{}因爲如果條件

+0

拜託,你能證明它是怎麼做到的?我從來沒有做過 –

+0

@АлександрМустафин參見上面我已經將它們添加到插值 – rank

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') 

希望這有幫助