所以我想要做的是根據Flash消息的類型(即錯誤,通知等)將不同的類應用於包含Flash消息的div。爲什麼此塊不會循環顯示所有的Flash消息? - Rails 3.1
我有這個在我的application.html.erb
:
<%- flash.each do |name, msg| -%>
<% if name = "error" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message error" %>
<% elsif name = "notice" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message success" %>
<% elsif name = "warning" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message warning" %>
<% end %>
<%- end -%>
但是,它總是輸出div
與id=flash_error
。
這是爲什麼?
更新1:
如果我改變了平等檢查是==
,它似乎在if
聲明的那部分完全跳過。
<%- flash.each do |name, msg| -%>
<% if name == "error" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message error" %>
<% elsif name = "notice" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message success" %>
<% elsif name == "warning" %>
<%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message warning" %>
<% end %>
<%- end -%>
如果你注意到,在上面的代碼,我在爲error
==
和warning
,我有=
爲notice
。那麼,在這種情況下,它實際上就像我想要的那樣輸出notice div
。看起來,當我檢查="error"
時,它完全退出條件,無論檢查是否正確。但是一旦我添加==
它甚至不會進行檢查。非常奇怪!
我喜歡採用編碼約定明確,以避免這種情況。訓練自己編寫'var.eql? 「string」或「string」== var'可以節省您的調試時間。 – maxenglander
但是我在這裏做'var =「string」'所以不知道你的意思。 – marcamillion
順便說一句,在我的情況'name.eql「字符串」'不起作用。它失敗了,並沒有輸出正確的'div'。所以不知道發生了什麼事。 – marcamillion