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 \&quot; 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.

¿Fue útil?

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 }) });" %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top