Kilka opcji:
escape_javascript
Alias: j
.
Działa tylko na ciągi.
Ucieka znaki, które mogą mieć specjalne znaczenie w ciągach JavaScript, , podobnie jak odwrotne ukośniki odwrotne, w formacie odpowiednim do umieszczenia w literałowych cytatach napisów JavaScript.
Utrzymuje html_safe
status wejścia, więc potrzebuje html_safe
inaczej znaki specjalne HTML jak <
dostanie uciekł do <
.
<% a = "\\n<" %>
<%= javascript_tag do %>
'<%= j(a) %>' === '\\n<'
'<%= j(a).html_safe %>' === '\\n<'
<% end %>
to_json + html_safe
Jak wspomniano przez Wiaczesława przejdź upvote go.
Działa, ponieważ JSON to almost a subset of Javascript object literal notation.
Działa nie tylko na obiektach haszujących, ale również na łańcuchach, tablicach i liczbach całkowitych, które są konwertowane na fragmenty JSON odpowiedniego typu danych.
<% data = { key1: 'val1', key2: 'val2' } %>
<%= javascript_tag do %>
var data = <%= data.to_json.html_safe %>
data.key1 === 'val1'
data.key2 === 'val2'
<% end %>
teleinformatyczny atrybuty
Dodaj wartości atrybutów, pobierać je z operacji JavaScript DOM.
lepiej z content_tag
pomocnika:
<%= content_tag 'div', '', id: 'data', data: {key1: 'val1', key2: 'val2'} %>
<%= javascript_tag do %>
$('#data').data('key1') === 'val1'
$('#data').data('key2') === 'val2'
<% end %>
Czasami nazywany "dyskretny JavaScript".
gon
Biblioteka specjalizuje się w pracy: https://github.com/gazay/gon
Prawdopodobnie najbardziej niezawodne rozwiązanie.
Gemfile:
gem 'gon'
Kontroler:
gon.key1 = 'val1'
gon.key2 = 'val2'
Układ app/views/layouts/application.html.erb
:
<html>
<head>
<meta charset="utf-8"/>
<%= include_gon %>
Widok:
<%= javascript_tag do %>
gon.key1 === 'val1'
gon.key2 === 'val2'
<% end %>
Zobacz także
Proszę, spróbuj przeczytać ten http://stackoverflow.com/help/deleted -answers, aby lepiej zrozumieć, jak ** nie ** odpowiedzieć. Mianowicie: "Odpowiedzi, które zasadniczo nie odpowiadają na pytanie": ** niewiele więcej niż link do strony zewnętrznej ** –
dzięki, zrobię więcej informacji w moich odpowiedziach – MQuy