Forum: Rails-ES Rutas "customizadas"

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Dca0370ea5c32cb1119a81d83b776138?d=identicon&s=25 Alex Epelde (epelde)
on 2009-01-14 16:14
A ver como consigo explicar el "problemilla" que tengo. Tengo un recurso
Group con los "típicos" métodos index, new, create....(controlador
REST). Resulta que al crear un grupo se crea en un estado "sin activar".
Posteriormente lo que necesitamos es enviar un correo con un enlace
creado dinámicamente (tipo "/activate/DD5D4D5DAD4A5SD45A4") que muestre
un formulario donde "activar" el grupo en cuestión. No quiero crear un
nuevo "recurso" en parte porque no tiene gran sentido. Tengo 2 métodos
en el groups_controller.rb "edit_activation" y "activate" que son los
que quiero llamar para mostrar el formulario (GET) y realizar la
activación (POST). Loq que quiero es utilizar la misma UTL
("/activate/DD5D4D5DAD4A5SD45A4") en ambos casos y dependiendo del
método http de la request redireccionar a uno u otro. Tengo claro que
debo definirlo en el routes.rb algo parecido a esto:

map.connect 'activate/:token', :controller => 'groups', :action =>
'edit_activation' (esto debería resolver la petición GET)

map.connect 'activate/:token', :controller => 'groups', :action =>
'activate' (esto debería resolver la petición POST)

pero no se como hacer para que dependiendo del método (GET/POST)
redirija a uno u otro método del controlador. ¿Me he explicado bien?
¿Alguna idea?

Muchas gracias.
0e34c56054c414263e933a1b8b3d0d55?d=identicon&s=25 Ruben Davila (rdavila)
on 2009-01-14 17:07
(Received via mailing list)
Yo me iria por la ruta de crear un recurso GroupActivations, pero si no
te
gusta eso, tal vez esto podria ayudar:

map.edit_activation_group '/groups/:id/activate/:token', :action =>
'edit_activation', :conditions => { :method => :get}
map.activate_group '/products/:id/activate/:token', :action =>
'activate',
:conditions => { :method => :put }

Creo que seria mejor usar 'confirm' en vez de activate, cuestion de
gustos.

Saludos.
Dca0370ea5c32cb1119a81d83b776138?d=identicon&s=25 Alex Epelde (epelde)
on 2009-01-14 17:29
Pues es exactamente lo que buscaba y me funciona tal y como esperaba.
Muchas gracias. No me gusta el tema de crear un nuevo recurso por un
tema conceptual, no se si tiene tanto "peso" como para considerarlo un
recurso. No tiene mayor sentido que el que ya he comentado, y me parece
mejor incorporar esa pequeña funcionalidad en el propio controlador.
Cuestión de preferencias en el diseño.

Repito muchas gracias, no me aclaraba con los parámetros a pasar para
definir el método de la request.

Un saludo.
This topic is locked and can not be replied to.