我目前正在查看piece of code from the excellent Rails-composer并且我不明白第3行中的嵌入式Ruby的作用:
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name == :notice ? "success" : "error" %>">
<a class="close" data-dismiss="alert">×</a>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
到目前为止,我看过Ruby documentation并没有运气。一旦我理解了这段代码是如何工作的,我想扩展它以支持所有级别的flash[]
消息。
答案 0 :(得分:6)
答案 1 :(得分:2)
这一行
result = (name == :notice ? "success" : "error")
可以转换为:
result =""
if(name == :notice)
{
result = "success"
}
else
{
result = "error"
}
在你的情况下,结果不是变量,但是它的值被粘贴到html。
编辑
我想扩展它以支持所有级别的flash []消息。
此运算符通常仅用于简单的真假条件,但如果您真的希望可以像这样使用它:
name == :notice ? "success" : name == :error ? "error" : "something else"
考虑使用它(更易读)
if name == :notice
"success"
elsif name == :error
"error"
else
"something else"
end
答案 2 :(得分:1)
该代码动态更改div类。它检查:通知和div类将得到:
取决于:通知结果。
答案 3 :(得分:0)
显示闪光灯的内容。闪存的每个键值对都显示为一个单独的div,div的类别取决于键。
第3行添加了一类警报成功或警告失败,具体取决于密钥是否:通知