Как вставить Ruby в JavaScript (файл Rails +.html.erb)
У меня есть файл .html.erb с некоторым javascript. Я хотел бы сделать что-то вроде этого:
var stuff = '<div><%= @ruby_var.title %></div>'
Каков наилучший способ сделать это? Может быть, я совсем не могу... Спасибо.
Ответы
Ответ 1
Чтобы безопасно это сделать, вам нужно использовать to_json:
<%= javascript_tag do %>
var stuff = <%= @ruby_var.title.to_json %>;
<% end %>
Это гарантирует, что ваш код не сломается, если @ruby_var.title имеет в себе цитату.
Чтобы включить div, я бы сделал:
<%= javascript_tag do %>
var stuff = <%= "<div>#{@ruby_var.title}</div>".to_json %>;
<% end %>
Обратите внимание, что нет кавычек вокруг <% =% > , to_json позаботится об этом для вас.
Ответ 2
<script>
var stuff = '<div><%=escape_javascript @ruby_var.title %></div>'
</script>
в вашем файле .html.erb будет работать нормально.
Ответ 3
Вы можете использовать функцию javascript_tag, чтобы включить Javascript в файл .html.erb.
Пример:
javascript_tag "alert('This is a test')"
в вашем файле foo.html.erb вернется
<script type="text/javascript">
//<![CDATA[
alert('This is a test')
//]]>
</script>
в браузере.
Ответ 4
Ruby не может быть запущен на клиенте, по крайней мере, не со специализированными плагинами браузера. Вместо этого взгляните на использование AJAX и RJS для запроса вашего веб-приложения Ruby из Javascript и вставки любого текста, который он возвращает на вашу страницу.
Без дополнительной информации я не думаю, что вы получите лучшие ответы. Я тоже могу быть полностью выключен, потому что я только догадываюсь о том, что вы действительно хотите сделать.