2010-09-21 9 views
8

Ahora que Rails 3 escapa de todos los elementos evaluados en las vistas (bueno), pero también está escapando de mi mensaje flash. Y me gusta el enlace ocasional en mi mensaje flash (o fuerte o énfasis).Carril 3: se han escapado los mensajes flash, mejor manera de deshacer el paisaje

Un mensaje flash:

flash[:notice] = "<strong>Bob</strong> was sucessfully checked in.<br />If you made a mistake, you can <a href=\"/scouts/#{@scout.id}/check_out\">check out Bob</a> to undo." 

está distorsionada, escapado, inutilizable.

puedo unescape el mensaje utilizando raw:

- flash.each do |name, msg| 
    = content_tag :div, raw(msg) 

Pero ahora cada mensaje flash es sin escapar.

¿Cómo puedo desacoplar solo un mensaje instantáneo? o solo partes del mensaje?

Respuesta

11

intente html_safe en su controlador para cada aviso que desee que se escape. Esto le permitirá eliminar la función raw de la vista y deshacer el escape solo de las que desee en el controlador.

flash[:notice] = "test<br/>test".html_safe 
+1

Perfecto. Gracias. Esto también ayudó: http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/ – Karl

+0

Esto no funcionará desde el controlador en los rieles 5. En realidad, se recomienda usar crudo en el ver, ver https://apidock.com/rails/String/html_safe – count0

Cuestiones relacionadas