mar*_*ion 0 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
所以我想要做的是根据flash消息的类型(即错误,通知等)将不同的类应用于包含flash消息的div.
我有这个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 -%>
Run Code Online (Sandbox Code Playgroud)
但是,它总是输出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 -%>
Run Code Online (Sandbox Code Playgroud)
如果您发现,在上面的代码,我==在error和warning我有=进行notice.好吧,在这种情况下,它实际上输出了notice div我想要的东西.似乎当我检查="error"它时完全退出条件,无论检查是否正确.但是,一旦我添加==它甚至没有做检查似乎.非常离奇!
可能是因为你没有检查平等吗?
不是对平等的检查
<% if name = "error" %>
Run Code Online (Sandbox Code Playgroud)
检查是否平等
<% if name == "error" %>
Run Code Online (Sandbox Code Playgroud)
也可能是您正在检查字符串.闪存哈希由符号索引.
尝试
<% if name == :error %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |