shallow rails examples concern ruby-on-rails routes

ruby on rails - rails - Redirige y levanta el mensaje flash cuando todo está en las rutas



routes rails examples (2)

Puedo redirigir todas las direcciones urls (inválidas) usando esta línea al final del archivo de rutas :

match ''*a'' => redirect(''/'')

Me gustaría hacer la redirección y pasar un mensaje de alerta en routes.rb .
Algo así como (la sintaxis es incorrecta aquí):

match ''*a'' => redirect(''/''), :alert => "aaargh, you don''t want to go to #{params[:a]}"

¿Es posible hacer esto?

Si estuviera haciendo esto en una vista / controlador, podría usar redirect_to y pasar un mensaje flash en la página redirigida (vea ejemplos en redirigir en los documentos ). Crear un nuevo método de controlador y redirigir allí funcionaría, pero parece poco elegante ... ¿es la forma recomendada?


Lo mejor que puedo hacer es:

match ''PATH'' => redirect { |p, req| req.flash[:alert] = "MESSAGE"; ''/'' }


Un ligero ajuste en la respuesta de Jun me permitió hacer esto:

match ''*a'' => redirect { |p, req| req.flash[:error] = "aaargh, you don''t want to go to #{p[:a]}"; ''/'' }

Que redirige las páginas inválidas a ''/'' junto con el mensaje deseado (dinámico).

Si va a www.your_website/a_bad_place esto pasa el mensaje en ''/'' :

aaargh, no quieres ir a a_bad_place

.

Puedes agarrar la url offending (inválida) completa al usar:

#{req.env["HTTP_HOST"]}#{req.env["REQUEST_PATH"]}

y mostrarlo con esto:

match ''*a'' => redirect { |p, req| req.flash[:error] = "aaargh, you don''t want to go to #{req.env["HTTP_HOST"]}#{req.env["REQUEST_PATH"]}"; ''/'' }

y verás:

aaargh, no quieres ir a www.yourwebsite/a_bad_place