如何在JavaScript中嵌入Ruby(Rails + .html.erb文件)

Jos*_*osh 17 ruby

我有一个.html.erb文件,里面有一些javascript.我想做这样的事情:

var stuff = '<div><%= @ruby_var.title %></div>'
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?我可能完全离开...谢谢.

Yon*_*ciu 22

要安全地执行此操作,您需要使用to_json:

<%= javascript_tag do %>
  var stuff = <%= @ruby_var.title.to_json %>;
<% end %>
Run Code Online (Sandbox Code Playgroud)

如果@ ruby​​_var.title中有引号,这将确保您的代码不会中断.

要包括我会做的div:

<%= javascript_tag do %>
  var stuff = <%= "<div>#{@ruby_var.title}</div>".to_json %>;
<% end %>
Run Code Online (Sandbox Code Playgroud)

请注意,<%=%>周围没有引号,to_json会为您处理.


rob*_*ana 11

<script>
 var stuff = '<div><%=escape_javascript @ruby_var.title %></div>'
</script>
Run Code Online (Sandbox Code Playgroud)

在你的.html.erb文件中工作正常.


Abo*_*uby 3

Ruby 不能在客户端运行,至少不能使用专门的浏览器插件。相反,请考虑使用 AJAX 和 RJS 从 Javascript 查询 Ruby Web 应用程序,并将其返回的任何文本插入到您的页面中。

如果没有更多信息,我认为您不会得到更好的答案。我也可能完全不在意,因为我只是猜测你真正想做的事情。