2012-03-24 12 views
7

Sto provando a reindirizzare a una posizione basata su un parametro su un modulo inviato. Se params [: route] = group, voglio reindirizzare a groups_path. Ho provato il seguente metodo per reindirizzare ma ovviamente abbastanza groups_path è una variabile e non una stringa. Come posso reindirizzare basato sul param?Redirect_to con percorso stringa

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

Edit: realizzato posso reindirizzare il percorso effettivo, ma questo non sembra un modo delle rotaie di farlo.

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

risposta

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

Ma preferisco scrivere un wrapper-helper ritorno adeguato URL Helper in base al valore params[:route]. params[:route] potrebbe potenzialmente avere qualsiasi valore e potresti voler salvare in questi casi.

+0

+ 1, risposta perfetta .. –

+0

Sono d'accordo, colpisci l'unghia in testa È considerato un problema se qualcuno tenta di inviare se stesso a un altro percorso, o verrà negato con l'autenticazione o comunque colpito una pagina 404. Perché Lo faccio un aiuto? – BookOfGreg

+2

sarebbe ancora meglio se si usa redirect_to send ("# {params [: route] .pluralize} _path") in modo da ottenere la plura corretta lization – meredrica

2

send può chiama il metodo privato, quindi meglio è public_send

e invece "# {params [: percorso]} s" utilizzare "# {params [: percorso] .pluralize}

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