2011-02-03 6 views
1

私のアクションの1つはページがキャッシュされているため、サーバーはHTMLだけを読んでいます。動的な部分がいくつかあり、レールメタルエンドポイントへのAJAX呼び出しを介してこれらの部分にアクセスします。レイルメタルのフラッシュメッセージにアクセスする方法

私はflash [:notice]やflash [:alert]の通知をコールに戻そうとしていますが、私は下のような致命的なエラーを受けています。レールメタルを使ってフラッシュメッセージにアクセスする方法はありますか?

私の金属クラスのコードは次のとおりです。

json = "{flash : '#{flash[:notice]}' , user_balance : #{@user.balance.to_i}, cart_items : #{bal} }" 
[200, {"Content-Type" => "application/json"}, [json] ] 

とエラー:

Thu Feb 03 13:01:20 -0800 2011: Read error: #<NoMethodError: undefined method `bytesize' for nil:NilClass> 
/home/brycemcd/.rvm/gems/ruby-1.8.7-p330/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in `method_missing' 
/home/brycemcd/.rvm/gems/ruby-1.8.7-p330/gems/rack-1.0.1/lib/rack/utils.rb:156:in `bytesize' 
/home/brycemcd/.rvm/gems/ruby-1.8.7-p330/gems/rack-1.0.1/lib/rack/content_length.rb:22:in `call' 
/home/brycemcd/Projects/theclymb/app/metal/presentation_cache.rb:29:in `inject' 

答えて

1

あなたはrack.sessionであなたのフラッシュメッセージを見つけることができます。ラックを使用する場合は、envという変数があります。 rack.sessionには、flashハッシュ:env["rack.session"]["flash"]["error"]またはenv["rack.session"]["flash"]["notice"]またはそれ以外のものが含まれます。

match "/hello" => proc { |env| [200, {}, "#{env['rack.session']['flash']['error']}"] }, :as => :hello 
+0

申し訳ありませんが、 'session'ではなく' rack.session' – fl00r

+0

ありがとうございました。私はまず文書の中でそれを見つけられませんでしたが、この答えは私のためにそれを開けました。 – brycemcd

関連する問題