Si no podes hacer los redirects prefixeados como sugiere Nelson esta complicado. La unica otra opcion es saltearte Rails y usar un redirect map file en Apache (si estas usando Apache) aunque no se si podes modificarlo y no tener que recomenzar Apache. La verdad que no le veo una solucion sencilla: o salteas el problema de conflictos usando un prefix o tenes que reescribir las rutas y recomenzar el server.
AEM 2008/5/28 nelson fernandez <[EMAIL PROTECTED]>: > Nacho, > > Desconozco el dominio del problema, pero quizás una solución algo más > simple podría ser dejar fija una parte de la ruta y usar los > parámetros para hacer el redirect, algo así > > map.connect '/r/*sections', :controller => :redirects, :action => redirect > > > -- > :: nelson :: > artesano de software > http://netflux.com.ar > > > 2008/5/28 NachoKB <[EMAIL PROTECTED]>: > > Grupo, > > tengo una duda con respecto a las rutas. El problema particular es que > > necesito implementar redirects arbitrarios administrables por un usuario > > (por lo que voy a tener un model Redirect, etc, etc). > > > > En donde me trabé es con las benditas rutas. Según entiendo, el primer > > mapeo que matchea la url (según el orden en que se declaran en el > routes.rb) > > es el que determina qué es lo que se ejecuta. > > > > Mi problema es si quiero tener redirects arbitrarios, necesito una > manera > > de que, si la url no matchea algún redirect específico (y esto está > definido > > por lógica propia del redirect, no alcanza el método connect...), poder > > continuar con la evaluación de las rutas subsiguientes. > > > > Algo así nunca lo vi posteado en ningún lado. Doy un ejemplo a ver si > > puedo aclarar un poco: > > > >> routes.rb: > >> > >> map.connect '*path', :controller => :redirects, :action => redirect > >> > >> map.connect ':controller/:action/:id' > > > > en este caso, la segunda regla nunca se llega a considerar (ya que la > > primera siempre matchea). RedirectsController siempre se ejecuta, aún > cuando > > no encuentre un redirect que aplique a la URL del request (en cuyo caso > no > > tiene forma de devolver el control de flujo a Routing). > > > > Entonces, dije, hago algo así (siempre usando rutas clásicas sin > resources > > en los ejemplos): > > > >> routes.rb: > >> > >> map.connect ':controller/:action/:id' > >> > >> map.connect '*path', :controller => :redirects, :action => redirect > > > > El problema con este approach es que si tengo un controller "Blog", por > > ejemplo, y quiero tener un redirect de "/blog/read/16" a > > "/blog/show/nombre-de-un-post", "/blog/read/16" matchea la primera regla > > (con { :controller => :blog, :action => :read, :id => "16" }) y nunca se > > ejecuta el controller Redirects... > > > > Por un lado necesito la flexibilidad de trabajar con redirects > > absolutamente arbitrarios (editables por un usuario), pero por otro lado > > comienzo a temer por el lado de performance. Una que se me había ocurrido > > era extender el connect con un bloque (que sirva de predicate para > aceptar > > la regla definitivamente, y ahí pondría la lógica propia). El problema > sería > > que eso se ejecutaría absolutamente en todo request (teniendo un overhead > > que puede ser notable si no cacheo esas consultas). > > > > Se me ocurriría extender Redirect Routing [1] para soportar bloques (me > > ahorraría el controller)... tendría que pensar en cómo hacerlo lo más > light > > posible de todas maneras... > > > > ¿Se les ocurre o conocen algo que se me haya pasado? > > > > nacho > > > > [1] > http://pinds.com/2006/07/18/release-redirect-routing-plugin-for-rails > > > > _______________________________________________ > > Ruby mailing list > > [email protected] > > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > > > > > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > -- Adrian Esteban Madrid Lead Developer, Prefab Markets http://www.prefabmarkets.com
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
