2012-03-24 16 views
7

Próbuję przekierować do lokalizacji na podstawie paramu na przesłanym formularzu. Jeśli parametry [: route] = group, chcę przekierować do group_path. Próbowałem następującej metody przekierowania, ale oczywiście ścieżka groups_path jest zmienna, a nie ciąg znaków. Jak mogę przekierować na podstawie paramu?Redirect_to ze ścieżką ciągu

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

Edit: realizowany mogę przekierować do rzeczywistej drogi, ale to nie wydaje się bardzo szyny sposób to robić.

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

Odpowiedz

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

Ale wolałbym napisać otoki pomocniczych powracającego odpowiedniego pomocnika url na podstawie wartości params[:route]. params[:route] może potencjalnie mieć dowolną wartość i w takich przypadkach możesz chcieć uratować.

+0

+ 1, idealna odpowiedź .. –

+0

Zgadzam się, uderzę w gwóźdź w głowę Czy to się liczy jako problem, gdy ktoś próbuje wysłać się na inną ścieżkę, albo zostanie odmówiony z uwierzytelnieniem, albo trafi na stronę 404. Dlaczego Zrobię to pomocnik? – BookOfGreg

+2

byłoby jeszcze lepiej, jeśli używasz redirect_to wysłać ("# {params [: route] .pluralize} _path"), więc masz właściwą plura lizacja – meredrica

2

wyślij mogą wywołuje metodę prywatny, dlatego lepiej jest public_send

i zamiast "# {params [: trasa]} s" użyć „# {params [route] .pluralize}

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