1

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'
4

3 回答 3

4

要在您可以使用的附加请求上保留 Flash 消息flash.keep- 来自Rails Guides 上的 Flash 部分

假设此操作对应于 root_url,但您希望此处的所有请求都重定向到 UsersController#index。如果一个动作在这里设置了 flash 和重定向,当另一个重定向发生时,这些值通常会丢失,但你可以使用 'keep' 让它持续到另一个请求。

澄清:此解决方案仅适用于由于双重重定向而丢失闪存的情况。

于 2012-06-18T07:51:12.137 回答
0

你试过这个吗?

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

此外,您可以使用:error

redirect_to(whatever_path, :error=>"hello error")
于 2012-06-18T06:37:01.347 回答
0

你在哪个版本的 Rails 上?您使用的语法是一个相对较新的功能。尝试长期这样做:

flash[:notice] = 'Created'
redirect_to root_path
于 2012-06-18T08:32:24.033 回答