9

Twitterのブートストラップアラートメッセージを使用しています。私のapplication.html.erbには...

            <% flash.each do |key, value| %>
                <div class="alert alert-<%=key%>">
                    <a class="close" data-dismiss="alert">×</a>
                    <%= value %>
                </div>
           <% end %>

通常、フラッシュメッセージを書きたいときは、次のように書きます

flash[:success] = "Profile updated"

ただし、デバイスのエラーメッセージにキーと値のペアを与える方法がわかりません。私はdevise.en.ymlを調べましたが、メッセージをキー、つまり:success、:errorなどに関連付けることができないようです.誰か助けてもらえますか? ありがとう!

4

4 に答える 4

8

これが私のやり方です

<% flash.each do |key, value| %>
<div class="message">
   <div class="alert-message <%= key %> fade in">
    <a class="close" href="#">&times</a>
    <center><strong><%= value %></strong></center>
  </div>
</div>
<% end %>
于 2012-04-20T10:30:57.257 に答える
0

問題は、devise_error_messages!それ自体でデータを を使用して div にラップするclass='alert'ため、フォームには同じクラスのネストされた 2 つの div が含まれることです。ボタンを押すと、xネストされた div が閉じられ、空の div は としてスタイルされたままになりますalert。これを回避するには、次のようにヘルパーの戻り値内の div を省略できます。

module DeviseHelper
  def devise_error_messages!
    return '' if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join

    html = <<-HTML
      <button type="button" class="close" data-dismiss="alert">x</button>
      #{messages}
    HTML

    html.html_safe
  end
end
于 2015-08-25T16:41:41.400 に答える