私がやっていることは、フラッシュメッセージのタイプ(エラー、通知など)に応じて、フラッシュメッセージを含むdivに別のクラスを適用することです。なぜこのブロックはすべてのフラッシュメッセージを循環しませんか? - 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 -%>
しかし、それは常にid=flash_error
とdiv
を出力しています。
なぜですか?
アップデート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
Btw、私の場合、 'name.eql" string "'は動作しません。その条件に失敗し、正しい 'div'を出力しません。何が起こっているのか分かりません。 – marcamillion