0

私は現在、優れたRails-composerのコードを調べていますが、3行目のEmbeddedRubyが何をするのかわかりません。

<% 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 %>

私はこれまで運が悪かったRubyのドキュメントを見てきました。flash[]このコードがどのように機能するかを理解したら、すべてのレベルのメッセージをサポートするようにコードを拡張したいと思います。

4

4 に答える 4

6

三項演算子です。

(condition) ? "true value" : "false value"

name == :noticeそれ以外の場合は使用すると言ってい"success"ます"error"

于 2013-01-22T18:09:06.190 に答える
2

この行

result = (name == :notice ? "success" : "error")

次のようにタンスレートできます:

result =""
if(name == :notice)
{
 result = "success"
}
else
{
 result = "error"
}

あなたの場合、結果は変数ではありませんが、その値はhtmlに貼り付けられます。

編集

すべてのレベルのflash[]メッセージをサポートするように拡張したいと思います。

この演算子は通常、単純なtrue false条件のためだけに使用されますが、本当に必要な場合は、次のように使用できます。

name == :notice ? "success" : name == :error ? "error" : "something else"

代わりにこれを使用することを検討してください(より読みやすい)

if name == :notice
 "success"
elsif name == :error
 "error"
else
 "something else"
end
于 2013-01-22T18:15:14.830 に答える
1

そのコードはdivクラスを動的に変更します。:noticeをチェックし、divクラスは次を取得します。

  • 「アラートアラート-成功」
  • 「アラートアラートエラー」

:noticeの結果によって異なります。

于 2013-01-22T18:21:41.433 に答える
0

フラッシュの内容を表示しています。フラッシュの各キーと値のペアは個別のdivとして表示され、divのクラスはキーによって異なります。

3行目は、キーが:noticeであるかどうかに応じて、alert-successまたはalert-failureのクラスを追加しています。

于 2013-01-22T18:11:31.753 に答える