【问题标题】:Is it possible to pass a flash message from Rails to Sinatra?是否可以从 Rails 向 Sinatra 传递 Flash 消息?
【发布时间】:2011-07-16 04:50:08
【问题描述】:

我有一个项目,将 Sinatra 用于静态页面,将 Rails 用于应用程序。

我通过在config.ru 中执行此操作来允许请求命中其中一个:

run Rack::Cascade.new([
  EightyEightTactical::Root,
  EightyEightTactical::Application
])

其中EightyEightTactical::RootSinatra::Base 的子类,EightyEightTactical::ApplicationRails::Application 的子类。

我遇到了一个棘手的情况,我需要在 Rails 控制器中设置一个 flash 消息并在 Sinatra 布局中显示它。

我注意到 Rails 在中间件中使用了ActionDispatch::Flash,但我似乎无法弄清楚如何在 Rails 应用程序之外访问 flash 消息。是我弄错了,还是可以这样做?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 sinatra rack middleware


    【解决方案1】:

    假设您使用的是 Cookie 会话存储,您可以执行以下操作:

    1) 使用config/initializers/session_store.rb 中指定的名称访问会话cookie。

    2) 解密会话cookie得到会话哈希

    3) 访问名为 flash 的密钥,其中包含一个哈希。

    4) 迭代并显示 flash 消息。

    您应该查看ActionController::Session::CookieStore 类以了解更多详细信息。

    【讨论】:

    • Here's the code 给任何有兴趣的人。
    • 我想提供一个与您类似的代码示例供参考,但懒惰了:-)。
    猜你喜欢
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多