将闪存哈希从一个控制器传递到另一个控制器

时间:2012-06-18 06:34:45

标签: ruby-on-rails ruby

我在一个控制器中有一个create方法,在这个控制器的末尾我想要redirect_to另一个控制器/视图。在第一个控制器完成并呈现下一个flash[:notice]视图后,我如何能够显示redirect_to

这是第一个控制器中的代码:

if @list.save
        redirect_to root_path, :notice => "Created!"

我也注意到它在这里也不起作用:

if @list.save
    redirect_to root_path, :alert => "Created!"

这是路线档案:

root :to => 'sessions#new'

3 个答案:

答案 0 :(得分:4)

要通过其他请求保留Flash消息,您可以使用flash.keep - 来自the flash section on Rails Guides

  

假设此操作对应于root_url,但您想要所有操作   请求将此处重定向到UsersController #index。如果一个动作   设置闪存并重定向到此处,通常会丢失值   当另一个重定向发生时,你可以使用'keep'来实现它   坚持要求另一个。

澄清:此解决方案仅适用于因双重重定向而丢失闪存的问题。

答案 1 :(得分:0)

你试过这个吗?

redirect_to(whatever_path, :notice=>"hello world")

此外,您可以使用:error

redirect_to(whatever_path, :error=>"hello error")

答案 2 :(得分:0)

您使用的是什么版本的Rails?您使用的语法是一个相对较新的功能。尝试做很多事情:

flash[:notice] = 'Created'
redirect_to root_path