2011-05-12 6 views
5

Por ejemplo, digamos que tengo el siguiente:En Rails, ¿puede establecer flash [: error] cuando se llama a link_to?

link_to 'Page', page_path(foobar) 

¿Hay una manera de fijar el flash [Error] en la llamada link_to que se mostrará en page_path?

Busco algo en la línea de:

link_to 'Page', page_path(foobar), :error => "Flash message" 
+1

No está claro cuál es su condición de error. ¿Quieres mostrar un mensaje de error cuando el enlace es malo? En cualquier caso, esto debe ser manejado por el 'controlador' que maneja su enlace. – Zepplock

+1

Digamos que tengo un sitio web sobre autos y una página que contiene una lista de enlaces. Al hacer clic, cada enlace lo enviará a una página que le brinda información sobre un automóvil específico. Si un administrador hace clic en el enlace "Car X" y hay información sobre Car X en la base de datos, se lo redireccionará a la página que lo muestra. Si hacen clic en el enlace "Coche Y", y no tiene información con respecto a él en la base de datos, quiero enviar al usuario a la página que les permite editar la información, así como mostrar un mensaje que diga algo así como "Este automóvil". no tiene ninguna información. Por favor, agregue algunos ". – user750897

Respuesta

3

En su controlador que responde a la relación que debe hacer flash[:error] = message. Debe estar en el mismo lugar donde decide si necesita redirigir a su administrador a la página edit. Una vez más está en el controller y no en el view

1

Debe establecer el flash [: error] en el controlador, pero puede hacer que utilice un parámetro que lo envíe en el enlace si lo desea. Mover la opción: error en la llamada ruta:

link_to 'Page', page_path(foobar, :error => "Flash message") 

Luego, en el controlador, i no encuentra el recurso o lo que sea, se podría decir

rápida [Error] = params [: error ] || "Lo sentimos, pero no hemos podido encontrar la página"

El problema con esto es que el parámetro se mostrará en la URL, por lo que tendrá una URL de (por ejemplo)

"/pages/123?error=Flash%20message 

o algo parecido ese.

Cuestiones relacionadas