Как получить доступ к флеш сообщениям в рельсах металла - PullRequest
1 голос
/ 04 февраля 2011

Одним из моих действий является кэширование страницы, поэтому сервер читает только HTML. Есть только несколько динамических частей, и я получаю доступ к этим частям через AJAX-вызов к конечной точке рельсового металла.

Я пытаюсь вернуть уведомления о вспышке [: alert] и / или flash [: alert] в вызове, но получаю загадочную ошибку (ниже). Есть ли способ получить доступ к флеш-сообщениям через rails metal?

Код в моем классе металла:

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 Ответ

1 голос
/ 04 февраля 2011

Вы можете найти ваши флеш-сообщения в rack.session. Используя Rack, он находится в переменной 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
...