是否可以将 Flash 消息从 Rails 传递到 Sinatra?
我有一个项目,使用 Sinatra 作为静态页面,使用 Rails 作为应用程序。
我允许请求通过在 config.ru
中执行以下操作来命中其中一个:
run Rack::Cascade.new([
EightyEightTactical::Root,
EightyEightTactical::Application
])
其中 EightyEightTactical::Root
是 Sinatra::Base
的子类code> 和 EightyEightTactical::Application
是 Rails::Application
的子类。
我遇到了一个棘手的情况,我需要在 Rails 控制器中设置闪存消息并将其显示在 Sinatra 布局中。
我注意到 Rails 在中间件中使用 ActionDispatch::Flash
,但我似乎无法弄清楚如何在 Rails 应用程序之外访问 flash 消息。我是否弄错了,或者这可以做到吗?
I have a project that uses Sinatra for static pages and Rails for the application.
I allow the request to hit one or the other by doing this in config.ru
:
run Rack::Cascade.new([
EightyEightTactical::Root,
EightyEightTactical::Application
])
Where EightyEightTactical::Root
is a subclass of Sinatra::Base
and EightyEightTactical::Application
is a subclass of Rails::Application
.
I'm in a tricky situation where I need to set a flash message in a Rails controller and display it in a Sinatra layout.
I notice that Rails uses ActionDispatch::Flash
in middleware, but I can't seem to figure out how to access the flash messages outside of a Rails app. Am I mistaken, or can this be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设您使用 Cookie 会话存储,您可以执行以下操作:
1) 使用 config/initializers/session_store.rb 中指定的名称访问会话 cookie。
2) 解密会话 cookie 以获取会话哈希
3) 访问包含哈希的名为
flash
的密钥。4) 迭代并显示闪现消息。
您应该查看 ActionController:: Session::CookieStore 类了解更多详细信息。
Assuming you are using a Cookie session store, you can do the following:
1) Access the session cookie with the name specified in
config/initializers/session_store.rb
.2) Decrypt the session cookie to get the session hash
3) Access the key called
flash
which contains a hash.4) Iterate and display the flash message.
You should look at ActionController::Session::CookieStore class for more details.