2010-10-29 18 views
22

Uso flash [: error] para mostrar un mensaje simple a los usuarios que no pueden realizar una operación de eliminación bajo ciertas condiciones. También tengo un enlace que los ayudará a obtener información sobre la entidad que querían eliminar y por qué no pueden hacerlo.Uso de HTML en mensajes flash Rails

¿Es aconsejable incluir este hipervínculo en el mensaje flash? Lo que significaría que tendría un fragmento de HTML en mi controlador. Si no, ¿cómo haré esto?

+5

¡Sería bueno si se hubiera explicado el downvote! * suspiro * –

Respuesta

38

Si desea incluir un enlace en su mensaje flash desde el controlador hay 2 temas. Generar el enlace y luego mostrarlo como HTML.

Para usar el link_to helper en el controlador, califíquelo completamente.

Para que la cadena se muestre como html (en lugar de escaparse), llame al método html_safe en la cadena. Así que la línea en su controlador podría verse así:

flash[:error] = "You can't do that. #{ActionController::Base.helpers.link_to "Here's why.", '/more_info.html'}".html_safe 
+0

por alguna razón, cuando uso .html_safe en mi mensaje flash, no se procesan la próxima vez alrededor de –

+1

¿Qué quiere decir con "próxima vez"? Los mensajes Flash generalmente no se procesan en solicitudes posteriores, esa es su naturaleza. – Ritchie

+0

A partir de Rails 4.1, esto no funcionará. – 0112

0

Puedes. También puede agregar algo de Ayuda en su controlador.

O puede hacerlo mediante el sistema i18n.

11

el objeto flash es un soporte para almacenar ver fragmentos/mensajes y persistirlos para una redirección utilizando la sesión. No veo absolutamente ningún problema en almacenar un enlace, o mejor una URL.

ejemplo:

redirect_to posts_path, :alert => "You cannot do that", :flash => { :url => post_path(@post) } 

y en vista de diseño, los sospechosos habituales:

- if flash[:alert] 
    ... 
    - if flash[:url] 
    = link_to "blah blah", flash[:url] 
Cuestiones relacionadas