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

Responder a