モデル固有のフラッシュメッセージを表示するパーシャルビューがあります。以下のような部分的なルックス:Rails - 生産時にSymbolを文字列に変換できません
アプリ/ビュー/ mymodelという/ _flashpartial.erb
<% flash.each do |key, value| %>
<% if model_key = myModelFlash(key) then %>
<%= content_tag(:div, value, :class => "flash #{model_key}") %>
<% end %>
<% end %>
はmyModelFlash
方法は、単純に、簡単な正規表現を使用して、特定のプレフィックスのための鍵とチェックを取ります。これは私の開発環境とテスト環境で完全に正常に動作
module MyModelHelper
def myModelFlash(key)
m = /^_mymodel_(.*)/.match(key)
m[1] unless m.nil?
end
end
アプリ/ヘルパー/ mymodelhelper.rbに位置しています。 Herokuに行くとすぐに、(ActionView :: Template :: Error) "SymbolをStringに変換できません"というエラーが表示され、match
への呼び出しが示されます。
myModelFlash
への呼び出しをビューから削除し、単純にキーと値を表示すると、エラーが発生しないという点ではうまくいくので、少なくともキーと値は部分的なビューに入る。何らかの理由でヘルパーメソッドは、キーに渡されるキーがシンボルであり、ストリングではないと考えます。
これはなぜ起こっているのでしょうか?
私は鍵を試しました。to_sを返しますが、結果の文字列は空であり、一致しませんでした。キーをヘルパーに渡す前にto_sを試し、そこで何が起こるかを見てみましょう。 –
したがって、フラッシュには異なるデータが含まれています。プロダクションサーバー上でフラッシュの内容をデバッグし、テストでこの値を使用してください。この場合、問題はおそらくコンポーネントのバージョンに関係していません。 – Arsen7
'model_key = myModelFlash(key.to_s)'を使うと、うまくいくでしょうが、これは少し問題になります。私は少し後でルビー/宝石のバージョンをチェックアウトし、私が思いつくことができるものを見ていきます。 –