¿Cómo puedo conseguir que los rieles no rinden cotizaciones escapadas como & quot?
-
27-09-2019 - |
Pregunta
En mi diseño tengo
<% @current_user.popups.each do |p| %>
<% content_for :script do %>
<%= "$(document).ready ( function() { $.jGrowl(\"#{p.message}\", { sticky: true }) });" %>
<% end %>
<% end %>
Y luego en la sección de script que tengo
<%= yield :script %>
El problema es que esto hace que las citas escapadas \"
Y a JavaScript no le gusta esto.
¿Cómo puedo evitar que esto suceda? ¿O hay otro enfoque para esto? No puedo usar citas individuales porque me gustaría tener un HTML en el mensaje. Agradecería cualquier ayuda.
Solución
¿Estás usando Rails 3? En rieles 3 html Escapar se realiza de forma predeterminada y debes omitirlo cada vez Como lo siguiente: JDL tenía la idea correcta anterior, pero parece que todavía tienes problemas.
<% content_for :script do %>
$(document).ready ( function() { $.jGrowl("<%= raw(p.message) %>", { sticky: true }) });
<% end %>
Pero aún mejor sería ejecutarlo el ayudante proporcionado por Rails: escape_javascript
Entonces, escape el carro regresa y cita
como esto:
$(document).ready ( function() { $.jGrowl("<%= raw(escape_javascript(p.message)) %>", { sticky: true }) });
Otros consejos
Intente agregar .html_safe a su cadena en la vista.
<%= "$(document).ready ( function() { $.jGrowl(\"#{p.message.html_safe}\", { sticky: true }) });" %>