Ruby on rails RubyonRails中的flash哈希是什么
我是一名经验丰富的PHP开发人员,但对RoR还不熟悉,我试图了解每件事的工作原理。我知道如何使用flash哈希,即在我的操作方法中,我将设置Ruby on rails RubyonRails中的flash哈希是什么,ruby-on-rails,Ruby On Rails,我是一名经验丰富的PHP开发人员,但对RoR还不熟悉,我试图了解每件事的工作原理。我知道如何使用flash哈希,即在我的操作方法中,我将设置 flash[:notice] = 'some message' 在我看来,我将展示这一点。 该机制也在Yii框架中实现。我理解它在那里的工作原理。我不明白的是它在RoR中是如何工作的flash只是一个局部变量,那么如何在视图中访问它呢?“flash”不是局部变量。它是会话的一部分,就像“会话”散列一样。这意味着会话哈希(闪存、会话、cookie)是Act
flash[:notice] = 'some message'
在我看来,我将展示这一点。
该机制也在Yii框架中实现。我理解它在那里的工作原理。我不明白的是它在RoR中是如何工作的
flash
只是一个局部变量,那么如何在视图中访问它呢?“flash”不是局部变量。它是会话的一部分,就像“会话”散列一样。这意味着会话哈希(闪存、会话、cookie)是ActionController::Base和ActionView::Base之间的共享值。因此,可以从控制器和视图访问会话哈希。为了在视图中访问flash,只需像在控制器中一样使用它。参考您以前的代码,您可以打印如下通知:
<% if flash[:notice] %>
<p><%= flash[:notice] %></p>
<% end %>
<%= flash[:notice] %>
有关此主题的进一步参考,请签出:哈希基本上是一个变量,由每个控制器/操作
请求填充,然后在执行请求后重置。正如Adilbiy Kanzitdinov
所提到的-它是在会话中设置的
散列:
flash提供了一种在动作之间传递临时对象的方法。
你放在闪光灯里的任何东西都会在下一次曝光
行动,然后清除。这是一种很好的通知和通知方式
警报,例如设置flash[:notice]=“Post”的创建操作
“已成功创建”,然后重定向到可以
然后将闪光灯暴露在模板上。事实上,这种暴露是
自动完成
您需要记住,ROR是完整的堆栈,这意味着它有一组中间件,用于为用户创建最有效的响应。这允许您设置local
变量(session
,params
,flash
是我能想到的3个变量)
要从视图调用,只需引用此局部变量,如下所示:
<%= flash[:key] %>
flash
实际上是一种方法。它不在您的控制器中,但Rails控制器将它连接到。因此,flash
方法是在请求对象中定义的,但是您可以从控制器和视图访问它
检查代码的链接。设置时,闪存实际上存储在会话中。下次用户请求页面时,可以在视图中使用flash
在您的视图中,您可以这样访问它:
<% if flash[:notice] %>
<p><%= flash[:notice] %></p>
<% end %>
<%= flash[:notice] %>
或者以一种更美观的方式(这只能通过注意和提醒来实现,因为它们经常被使用):
有关更多信息,请参阅。阅读并检查了它们,但无法理解flash的范围[:注意],如果它是一个局部变量,我如何在该操作之外的任何位置访问它。。。