2011-06-25 6 views
0

のArray私は次のような部分的なフラッシュを実行しようとしています:未定義のメソッド[]のための `safe_concat」:レール3

<% flash.each do |key, value| %> 
    <div class="flash <%= "#{key}" %>"><%= "#{value}" %></div> 
<% end %> 

と、次のエラーを取得しています:

undefined method `safe_concat' for []:Array 

次のようにajaxリクエストにより部分的に更新されています:

page.replace_html "flash_messages", :partial => 'layouts/flash', :locals => { :flash => flash } 

アイデアをお持ちですか?私は前にこのような何かを見たことがない。

ありがとうございました。

答えて

0

次のようにはなりませんか?

<% flash.each do |key, value| %> 
    <div class="flash #{key}"><%= value %></div> 
<% end %> 

"#{}"keyvalueをラップする必要はありません。私は<>がネストされていて、それがあなたのラインでチョークしたものだと思います。

私は多分あなたのようなものが必要になり、それが実際に<% %>key外にアクセスできるかどうか私は知らないでしょうしようとすることはできません。

<% flash.each do |key, value| %> 
    <% class_names = "flash #{key}" %> 
    <div class="<%= class_names %>"><%= value %></div> 
<% end %> 
+0

はアプローチと同じ問題の両方を試してみました。面白いのは、application.html.erbファイルにコードを記述すると、これは起こらないということです。何らかの理由で、それを部分的にすることは物事を混乱させている...なぜ非常に奇妙なのですか? – deruse

+0

ええと、私はオプションがありませんね、私のRails/Rubyの知識はあまり良くありません。 – slhck