2012-03-24 169 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")