在Rails 3中,您可以设置根路径以从config / routes.rb重定向到其他地方:
root :to => redirect("/dashboard")
这有效,除了它消除了传递给root的任何flash参数。你怎么能通过重定向传递它们?
更新: James Chen's solution,即将路线声明重写为root :to => redirect { |p, req| req.flash.keep; "/dashboard" }
,对我有用。但有两件事我不明白:
p
代表什么,params?我尝试使用do
/ end
和换行符重写块:
root :to => redirect do |p, req|
req.flash.keep
"/dashboard"
end
但是由于“ArgumentError:不支持重定向参数”而失败。这是为什么?
答案 0 :(得分:11)
使用flash.keep
。
在路线文件中为重定向写一个proc:
root :to => redirect { |p, req| req.flash.keep; "/dashboard" }
因此,从正常重定向到根URL的flash params将被传递:
redirect_to root_url, :notice => "test flash notice"
答案 1 :(得分:3)
为什么你不会做像
这样的事情root:to => '仪表盘#索引'
假设'/ dashboard'导致仪表板控制器索引操作。
更新---
我的意思是,如果你真的想要,你可以添加到'/ dashboard'显示的html.erb页面
并做这样的事情
<% if request.referer.scan('yoursitename').size == 0 %>
<%= create your own notice here %>
<% end %>
再次编辑......叹息..
忘了,你可以只是root:to =&gt; 'whateveryouroriginal#rootareawas' 然后就做:
redirect_to '/dashboard'
在你的原始控制器rootareawas行动中
这真的很脏但是凌晨2点我必须从伊利诺伊州开车去格鲁吉亚。
希望这有帮助