Как встроить Ruby в JavaScript (файл Rails + .html.erb) - PullRequest
17 голосов
/ 30 августа 2010

У меня есть файл .html.erb с небольшим количеством JavaScript.Я хотел бы сделать что-то вроде этого:

var stuff = '<div><%= @ruby_var.title %></div>'

Каков наилучший способ сделать это?Я могу быть полностью выключен ... Спасибо.

Ответы [ 4 ]

22 голосов
/ 01 января 2012

Чтобы безопасно сделать это, вам нужно использовать 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 об этом позаботится.

11 голосов
/ 30 августа 2010
<script>
 var stuff = '<div><%=escape_javascript @ruby_var.title %></div>'
</script>

в вашем .html.erb файле будет работать нормально.

3 голосов
/ 12 июля 2011

Вы можете использовать функцию 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>

в браузер.

3 голосов
/ 30 августа 2010

Ruby нельзя запустить на клиенте, по крайней мере, с помощью специальных плагинов для браузера.Вместо этого посмотрите на использование AJAX и RJS для запроса вашего веб-приложения на Ruby из Javascript и вставьте любой текст, который он возвращает, на вашу страницу.

Без дополнительной информации я не думаю, что вы получите какие-либо лучшие ответы,Я тоже могу быть совершенно не в себе, потому что я только догадываюсь о том, что ты действительно хочешь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...