2012-03-24 18 views
7

Estoy tratando de redirigir a una ubicación basada en un parámetro en un formulario enviado. Si params [: route] = group, quiero redireccionar a groups_path. Probé el siguiente método para redireccionar pero, obviamente, el groups_path es una variable y no una cadena. ¿Cómo puedo redireccionar basado en el param?Redirect_to con cadena de ruta

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

Editar: se dieron cuenta de que puedo redirigir a la trayectoria real, pero esto no parece ser una muy carriles manera de hacerlo.

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

Respuesta

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

Pero prefiero escribir un envoltorio-helper regresar asistente de url adecuada en función del valor params[:route]. params[:route] podría tener algún valor y es posible que desee rescatar en estos casos.

+0

+ 1, respuesta perfecta ... –

+0

Estoy de acuerdo, dar en el clavo. Se cuenta como un problema si alguien trata de enviarse a otro camino, de todos modos se les negará la autenticación o golpearán una página 404 de todos modos. Lo hago un ayudante? – BookOfGreg

+2

sería aún mejor si usas redirect_to send ("# {params [: route] .pluralize} _path") para que obtengas el plura correcto lización – meredrica

2

puede enviar llamadas de método privado, por lo tanto mejor se public_send

y en su lugar "# {params [: ruta]} s" uso "# {params [: ruta] .pluralize}

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