Rails 3路由:包括带有根重定向的flash参数

eva*_*phy 3 redirect routing ruby-on-rails ruby-on-rails-3

在Rails 3中,您可以设置根路径以从config/routes.rb重定向到其他位置:

root :to => redirect("/dashboard")
Run Code Online (Sandbox Code Playgroud)

这有效,除了它消除了传递给root的任何flash参数.你怎么能通过重定向传递它们?

更新: James Chen的解决方案,即重写路线声明root :to => redirect { |p, req| req.flash.keep; "/dashboard" },对我有用.但有两件事我不明白:

  1. 什么p代表,params?
  2. 我尝试使用do/ end和换行符重写块:

    root :to => redirect do |p, req|
      req.flash.keep
      "/dashboard"
    end
    
    Run Code Online (Sandbox Code Playgroud)

    但这失败了"ArgumentError:不支持重定向参数".为什么是这样?

Jam*_*hen 11

使用flash.keep.

在路由文件中为重定向写一个proc:

root :to => redirect { |p, req| req.flash.keep; "/dashboard" }
Run Code Online (Sandbox Code Playgroud)

因此,从正常重定向到根URL的flash params将被传递:

redirect_to root_url, :notice => "test flash notice"
Run Code Online (Sandbox Code Playgroud)