Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails中的flash哈希是什么_Ruby On Rails - Fatal编程技术网

Ruby on rails RubyonRails中的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

我是一名经验丰富的PHP开发人员,但对RoR还不熟悉,我试图了解每件事的工作原理。我知道如何使用flash哈希,即在我的操作方法中,我将设置

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的范围[:注意],如果它是一个局部变量,我如何在该操作之外的任何位置访问它。。。