ビューをレンダリングしてエラーを出力する前に、次の行を実行するコントローラーがあります。
flash[:error]="Flash error"
flash[:info] = "Flash info"
これをうまくフォーマットしたいと思います。そのために私はこのようなヘルパーを書きました
def show_flash
a=""
[:success, :info, :error, :warning].each do |key|
a += content_tag(:div, flash[key], :id => key, :class => "#{key}") unless flash[key].blank?
end
end
私の見解では、私は次のように呼びます。
<%= show_flash %>
これを実行しようとすると、Webページはdivタグ、山かっこなどを含むshow_flashの全文をレンダリングします。(FirefoxまたはChromeを使用して)要素を調べると、二重引用符で囲まれたテキストが表示されます。
次に、ヘルパーの1行を次のように変更してみました。
a = content_tag(:div, flash[key], :id=>key, :class=>"#{key]") unless flash[key].blank?
つまり、両方ではなく、最後のコンテンツタグ(エラー)のみをキャプチャします。
2番目のケースでは、Webブラウザーは、「エラー」クラスのCSSルールで正しくフォーマットされたdivタグをレンダリングしました。ブラウザにdivタグが出力されていません。
2つのcontent_tag要素を連結すると、なぜこの悲しみが生じたのですか?
私はあなたが私に与えることができるどんな助けにも感謝します。