0

なぜこれが起こっているのかわかりませんが、Railsアプリでフォームを正常に送信すると、成功したフラッシュメッセージにエラーのdivクラスが追加されます。フラッシュメッセージに次のコードを使用しています。

<% flash.each do |name, msg| %>
   <div class="alert alert-<%= name == :notice ? "success" : "error" %>">
      <a class="close" data-dismiss="alert">&#215;</a>
      <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
   </div>
<% end %>

それはまさにライアンベイツがこのレールキャストで行うことを提案していることです:

http://railscasts.com/episodes/329-more-on-twitter-bootstrap?view=asciicast

そのコードの何が問題になっていますか?これを行うだけで問題なく動作します。

<% flash.each do |name, msg| %>
  <div class="alert alert-<%= name %>">
    <a class="close" data-dismiss="alert">&#215;</a>
    <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
  </div>
<% end %>

しかし、それはこれを行う正しい方法ではないようです。railscastで提案されたコードが機能しない理由がわかりません。

4

2 に答える 2

0

私が覚えている限り、flash空の要素が含まれていることがあります。flash反復する前に何かがあるかどうかを確認してください。

于 2012-08-27T04:29:41.060 に答える
0

コントローラでフラッシュメッセージを作成したとき'notice'に、記号の代わりに文字列を入れることができます。:noticeこれらの行をに追加application.html.hamlして、フラッシュメッセージから何が得られるかを確認してください

- if Rails.env.development?
  = debug(params) 
  = debug(flash) unless flash.empty?
于 2012-08-27T04:50:44.473 に答える