Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 Rails在单击flash消息中的链接时保持闪烁(它应该是';t) 注意:这与“现在vs通知”问题不同。请继续读下去。_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails在单击flash消息中的链接时保持闪烁(它应该是';t) 注意:这与“现在vs通知”问题不同。请继续读下去。

Ruby on rails Rails在单击flash消息中的链接时保持闪烁(它应该是';t) 注意:这与“现在vs通知”问题不同。请继续读下去。,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在flash通知中有一个链接,在重定向后正确显示。但是,当我单击链接(指向仅呈现视图的其他控制器操作)时,包含该链接的通知将保留在该页面中。这通常是它的工作原理,因为通知只有在重定向时才会消失,所以我想问题是如何使链接表现为重定向?我不能完全肯定 一些代码可以说明: redirect_to root_url,注意:“我是一个带有#{link}的通知” 而link仅仅是指向一个动作的路径,该动作不做任何事情,而是呈现一个布局,因此它有效地: def动作 结束 现在,上面的代码很好,但是当我在

我在flash通知中有一个链接,在重定向后正确显示。但是,当我单击链接(指向仅呈现视图的其他控制器操作)时,包含该链接的通知将保留在该页面中。这通常是它的工作原理,因为通知只有在重定向时才会消失,所以我想问题是如何使链接表现为重定向?我不能完全肯定

一些代码可以说明:

redirect_to root_url,注意:“我是一个带有#{link}的通知”

link
仅仅是指向一个动作的路径,该动作不做任何事情,而是呈现一个布局,因此它有效地:

def动作
结束

现在,上面的代码很好,但是当我在通知中单击该链接时,相同的通知将保留在该链接的页面中,这不是此处所需的行为。你知道怎么处理吗?换句话说,我们正在寻找一种方法,使通知中的链接不会随身携带通知

编辑(2) 我试过闪现在的把戏。由于下一个方法调用是重定向,它将无法工作,这将破坏flash的全部功能。现在请尝试以下操作:

flash.now[:notice] = "I am a notice with a #{link_to_another_controller_action}"
redirect_to root_url

相应地更改您的代码,它将起作用

有两种方式显示flash消息功能

立即在同一页面加载,并可从
flash['foo']的视图中访问:

flash.now['foo'] = "Hello world"
redirect_to root_url, notice: "Hello world"
或者重定向到另一个页面,可从
flash['notice']访问:

flash.now['foo'] = "Hello world"
redirect_to root_url, notice: "Hello world"
ROR gudies网站是一个很好的参考:

然后尝试该方法。在您的情况下,在目标控制器操作中,它可能采用如下形式:

flash.discard
flash.discard(:notice)

向我们展示第一次设置通知的操作代码,以及与链接相关的操作。嘿@MikeCampbell通知是在我上面展示的代码中设置的,减去一些链接的html格式,这是不相关的。我将添加链接的其他操作。这肯定是非标准行为,您所做的一定有点奇怪。你准备在一个新的Rails应用程序中复制它吗?是的,我很可能会。在Rails应用程序中,它是通过视图中的
-if flash[:notice]
和一些haml代码完成的。我猜你的问题和其他事情有关。好吧,不管怎么说,只要把它扔出去,也许你会想出一个主意。我知道这个选项,但我不喜欢它,因为这意味着我正在丢弃所有关于目标操作的通知,这是一种代码气味。我可以根据推荐人有条件地忽略,但这仍然是一种非常糟糕的做法,因为我正在将问题转移到其他不相关的操作上。