2012-03-24 89 views
7

我想重定向到基于提交表单上的参数的位置。 如果params [:route] = group,我想重定向到groups_path。 我尝试了以下方法重定向,但显然groups_path是一个变量而不是一个字符串。我如何根据参数重定向?Redirect_to与字符串路径

redirect_to "#{params[:route]}s_path" 

编辑: 意识到我可以重定向到实际的路径,但是这似乎并不像一个很轨做的方式。

redirect_to "/#{params[:route]}s" 

回答

12
redirect_to send("#{params[:route].pluralize}_path") 

但我宁愿写一个包装辅助基础上,params[:route]值返回相应的URL帮手。 params[:route]可能有任何价值,你可能想在这些情况下救援。

+0

+ 1,完美的答案.. – 2012-03-24 16:35:29

+0

我同意,打在头上 如果有人试图将自己发送到另一条路径,它会被视为一个问题,他们将要么通过身份验证被拒绝,要么无论如何打404页。如果你使用redirect_to send(“#{params [:route] .pluralize} _path”),那么我会让它成为帮手吗? – BookOfGreg 2012-03-24 23:13:22

+2

会更好,所以你得到正确的plura补肾中药 – meredrica 2013-03-18 07:38:02

2

发送可以调用私有方法,因此更好的是public_send

和代替 “#{PARAMS [:路线]}的” 使用“#{PARAMS [:路线] .pluralize}

redirect_to public_send("#{params[:route].pluralize}_path")