algunas opciones:
escape_javascript
Alias: j
.
Funciona únicamente en cadenas.
Escapa de caracteres que pueden tener un significado especial en cadenas de Javascript, como escapes de barra invertida, en un formato adecuado para poner dentro de cadenas de texto Javascript las comillas.
Mantiene html_safe
estado de la entrada, por lo que necesita html_safe
caracteres HTML especiales, como por lo demás <
conseguirían escapado a <
.
<% a = "\\n<" %>
<%= javascript_tag do %>
'<%= j(a) %>' === '\\n<'
'<%= j(a).html_safe %>' === '\\n<'
<% end %>
a_json + html_safe
Como se ha mencionado por Vyacheslav, ir él Upvote.
Funciona porque JSON es almost a subset of Javascript object literal notation.
Funciona no solo en objetos hash, sino también en cadenas, matrices y enteros que son convertidos a fragmentos JSON del tipo de datos correspondiente.
<% data = { key1: 'val1', key2: 'val2' } %>
<%= javascript_tag do %>
var data = <%= data.to_json.html_safe %>
data.key1 === 'val1'
data.key2 === 'val2'
<% end %>
Data- atributos
añadir valores a los atributos, recuperarlos con operaciones Javascript DOM.
mejor con el ayudante content_tag
:
<%= content_tag 'div', '', id: 'data', data: {key1: 'val1', key2: 'val2'} %>
<%= javascript_tag do %>
$('#data').data('key1') === 'val1'
$('#data').data('key2') === 'val2'
<% end %>
A veces llamado "discreta Javascript".
gon
biblioteca especializada para el trabajo: https://github.com/gazay/gon
Probablemente la solución más robusta.
Gemfile:
gem 'gon'
controlador:
gon.key1 = 'val1'
gon.key2 = 'val2'
Disposición app/views/layouts/application.html.erb
:
<html>
<head>
<meta charset="utf-8"/>
<%= include_gon %>
Vista:
<%= javascript_tag do %>
gon.key1 === 'val1'
gon.key2 === 'val2'
<% end %>
Ver también
Por favor, intente leer este http://stackoverflow.com/help/deleted -respuestas, para obtener más información sobre cómo ** no ** responder. A saber: "Respuestas que no responden fundamentalmente a la pregunta": ** apenas más que un enlace a un sitio externo ** –
gracias, haré más detalles en mis respuestas – MQuy