我的一个观点中有一些代码就像这样。我觉得它有太多的条件。它只是检查ActiveRecord对象的状态并设置图像。有没有更好的方法在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 :(得分: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文件中。
答案 1 :(得分: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;}
这不是防错的,但我希望它会给你一个想法