2012-06-19 27 views
0

我在軌道之一3個應用視圖以下代碼:根據Rails 3應用程序中的字段值修改視圖?

<ul> 
<li style="position:relative"> 
<b>MR</b> - 18 Jun. 2012 - 11:07<br /> 
<p style="width:85%">Paid by Cheque 000562</p> 
<span style="position:absolute;top:0px;right:0px;text-align:right">&pound;0,00<br /><b>Balance: -&pound;7,36</b></span> 
</li> 
<hr /> 
<li style="position:relative"> 
<b>JJ</b> - 01 May. 2012 - 09:35<br /> 
<p style="width:85%">label 2 Packets Recovery -Rabbit</p> 
<span style="position:absolute;top:0px;right:0px;text-align:right">&pound;0,00<br /><b>Balance: &pound;7,36</b></span> 
</li> 
<hr /> 

這將顯示內容如下:

Screenshot

原始Rails代碼是如下:

<ul> 
<% @animal.clinicals.each do |clinical| %> 
<li> 
<b><%= clinical.UserID %></b> - <%= clinical.FullDateTime.strftime("%d %b. %Y - %H:%M") %><br /> 
<p><%= clinical.ClinicalText %></p> 
<span><%= number_to_currency(clinical.Fees, :unit => "&pound;", :separator => ",", :delimiter => "") %><br /><b>Balance: <%= number_to_currency(clinical.LineBalance, :unit => "&pound;", :separator => ",", :delimiter => "") %></b></span> 
</li> 
<hr /> 
<% end %> 
</ul> 

我想要做的是根據ClinicalText字段中的值更改HTML代碼。例如,以下是可能的條目到該字段:

label 2 Packets Recovery -Rabbit 
Surcharge (Credit) 
disp 250 Tabs... 

所以,如果ClinicalText包含「標籤」一開始我想刪除字標籤,並添加CSS樣式的李。同樣,如果它包含'Surcharge'或'disp',我想爲li添加不同的CSS樣式。

我可以想到一種在視圖中使用if,else和elseif語句的方式,但我更喜歡這種方式是在某種幫助中。

任何指針,將不勝感激!

回答

1

我會寫一個幫助程序,它會生成整個<p>標記 - 這會讓您更容易地添加類,然後您可以使用CSS進行樣式設置。您可以使用caseswitch在大多數其他語言)語句:

def format_clinical_text(txt) 
    cls = '' 

    case(txt) 
    when /\Alabel/i 
     txt.sub!(/label\s*/, '') 
     cls = 'label' 
    when /\Asurcharge/i 
     cls = 'surcharge' 
    when /\Adisp/i 
     cls = 'disp' 
    end 

    return "<p class=\"#{cls}\">#{ERB::Util.h(txt)}</p>".html_safe 
end 

,這一行:

<p><%= clinical.ClinicalText %></p> 

將成爲:

<%= format_clinical_text(clinical.ClinicalText) %> 

就是這樣!請注意,這些正則表達式不區分大小寫,但要求觸發器字是輸入字符串中的第一個字符(不包含空格或nuthin)。此外,只有"label"的情況下刪除它匹配的單詞。這就是我解釋你的問題的方式,但我可能是錯的。根據需要調整。

希望有幫助!

相關問題