在这种情况下,Ruby运算符==做了什么?

Fra*_*let 0 ruby

我目前正在查看优秀的Rails-composer中的一段代码,我不明白第3行中的Embedded 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">&#215;</a>
      <%= content_tag :div, msg, :id => "flash_#{name}" %>
    </div>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我看过Ruby文档并没有运气.一旦我理解了这段代码是如何工作的,我想扩展它以支持所有级别的flash[]消息.

Aus*_*rst 6

这是三元运营商.

(condition) ? "true value" : "false value"
Run Code Online (Sandbox Code Playgroud)

它说,如果name == :notice"success"其他方式"error".