2010-08-30 47 views
2

我在我的一個意見,像這樣有一些代碼。我覺得它有太多的條件。它所做的只是檢查ActiveRecord對象的狀態並設置圖像。有沒有更好的方法來在Rails中進行以下操作?更清潔的方式在Rails中做到這一點

<td class="notification_msg"> 
    <% if notification.status == NOTIFICATION_STATUS.index("Failure") %> 
    <img src="images/failure.png" style="vertical-align: middle"/> 
    <% elsif notification.status == NOTIFICATION_STATUS.index("Success") %> 
    <img src="images/success.png" style="vertical-align: middle"/> 
    <% elsif notification.status == NOTIFICATION_STATUS.index("Warning") %> 
    <img src="images/warning.gif" style="vertical-align: middle"/> 
    <% else %> 
    <img src="images/unknown.gif" style="vertical-align: middle"/> 
    <% end %> 
    <%= notification.message %> <%= cta_links_for(notification) -%> 
</td> 

感謝

+0

爲什麼在失敗時顯示success.png? – marcgg 2010-08-30 10:53:26

+0

@marcgg:我的壞..這是一個錯字..糾正.. – bragboy 2010-08-30 10:59:22

回答

5

我會把邏輯拉成助手。您的ERB:

<td class="notification_msg"> 
    <%= notification_image(notification.status) %> 
    <%= notification.message %> <%= cta_links_for(notification) -%> 
</td> 

然後在您的視圖助手:

def notification_image(status) 
    name = NOTIFICATION_STATUS[status].downcase 
    return image_tag "#{name}.png" 
end 

和當然,沒有內嵌樣式。所以把.notification_msg img{vertical-align:middle;}放在你的css文件中。

4

您可以更改

<img src="images/success.png" style="vertical-align: middle"/> 

= image_tag "success.png 

然後使用CSS:

.notification_msg img{vertical-align:middle;} 

我對你爲什麼顯示失敗success.png迷茫,我曾經你解釋添加更多的信息,以我的答案是:)


從我這裏瞭解我會做:

ERB:

<td class="notification_msg"> 
    <%= image_tag "#{notification.status}.png" %> 
    <%= notification.message %> <%= cta_links_for(notification) -%> 
</td> 

CSS:

.notification_msg img{vertical-align:middle;} 

它不是防錯,但我希望它'會給你一個想法

+0

感謝您的即時響應。如果我們直接放置'#{notifiction.status} .png',那會不會增加圖像文件和視圖之間的耦合? – bragboy 2010-08-30 11:01:09

+0

@bragboy:是的,但它不是一件壞事(imho) – marcgg 2010-08-30 11:03:45

相關問題