ruby - rutas - ¿Cómo puedo crear una ruta de Rails 3 que coincida con todas las solicitudes y que vaya directamente a un recurso/página?
routes ruby on rails (4)
¿Dónde se encuentra esta línea en "route.rb"?
Para tener prioridad sobre otras rutas, se debe colocar primero.
Como alternativa, puede consultar esto: http://onehub.com/blog/posts/rails-maintenance-pages-done-right/
O esto: Rieles: modo de mantenimiento solo de administración
Tengo una aplicación de Rails (Rails 3.0) que necesito dejar temporalmente fuera de servicio. Mientras esto esté vigente, quiero crear una nueva ruta que dirija todas las solicitudes a una sola pieza de contenido estático. Tengo un controlador configurado para servir a mis páginas estáticas.
Probé algo como esto:
match ''*'' => ''content#holding''
y
match ''*/*'' => ''content#holding''
para coincidir con una ruta de comodín como se describe aquí: Rails 3 enruta el globbing sin éxito
Esta es probablemente una respuesta muy simple, pero no pude entenderla.
/ EDITAR / Olvidé mencionar que tenía esta regla en la parte superior de mi archivo de rutas.rb.
Hice esto justo ayer y primero se me ocurrió la solución que muestra klochner. Lo que no me gustó de esto es el hecho de que todo lo que ingrese en la URL, permanezca allí después de que se cargue la página, y como quería una ruta de captura que redirige a mi root_url, no fue muy atractivo.
Lo que se me ocurrió se ve así:
# in routes.rb
get ''*ignore_me'' => ''site#unknown_url''
# in SiteController
def unknown_url
redirect_to root_url
end
¡Recuerda pegar la entrada de rutas en la parte inferior del archivo!
EDITAR: como Nick señaló, también puede hacer la redirección directamente en el archivo de rutas.
Me encontré con algo como esto donde tenía nombres de dominio como parámetro en mi ruta:
match ''/:domain_name/'', :to => ''sitedetails#index'', :domain_name => /.*/, :as =>''sitedetails''
La pieza clave para esto fue el /.*/ que fue un comodín para casi cualquier cosa. Entonces tal vez podrías hacer algo como:
match ''/:path/'', :to => ''content#holding'', :path=> /.*/, :as =>''whatever_you_want''
Rails necesita vincular los parámetros de url a una variable, intente esto:
match ''*foo'' => ''content#holding''
Si también desea hacer coincidir /
, use paréntesis para especificar que foo
es opcional:
match ''(*foo)'' => ''content#holding''