【问题标题】:How to access flash messages in rails metal如何访问 rails metal 中的 flash 消息
【发布时间】:2011-02-03 21:20:45
【问题描述】:

我的一项操作是页面缓存,因此服务器仅读取 HTML。只有几个部分是动态的,我通过对 rails metal 端点的 AJAX 调用来访问这些部分。

我也在尝试在通话中返回 flash[:notice] 和/或 flash[:alert] 通知,但我不断收到一个神秘错误(如下)。有没有办法通过 rails metal 访问 flash 消息?

我的金属类中的代码是:

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'

【问题讨论】:

    标签: ruby-on-rails rack


    【解决方案1】:

    您可以在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
    

    【讨论】:

    • 对不起,不是session,而是rack.session
    • 谢谢,做到了。起初我在文档中没有找到,但这个答案为我打开了它。
    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多