我有一个.html.erb文件,里面有一些javascript。我想做这样的事情:
var stuff = '<div><%= @ruby_var.title %></div>'
最好的方法是什么?我可能完全离开...谢谢。
答案 0 :(得分:22)
要安全地执行此操作,您需要使用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 %>
请注意&lt;%=%&gt;周围没有引号,to_json会为您处理。
答案 1 :(得分:11)
<script>
var stuff = '<div><%=escape_javascript @ruby_var.title %></div>'
</script>
你的.html.erb文件中的可以正常工作。
答案 2 :(得分:3)
Ruby不能在客户端上运行,至少不能使用专门的浏览器插件。相反,看看使用AJAX和RJS从Javascript查询您的Ruby Web应用程序,并将它返回的任何文本插入到您的页面中。
如果没有更多信息,我认为你不会得到任何更好的答案。我也可能完全离开,因为我只是猜测你真正想要做什么。
答案 3 :(得分:3)
您可以使用javascript_tag function在.html.erb文件中包含Javascript。
示例:
javascript_tag "alert('This is a test')"
你的foo.html.erb中的将返回
<script type="text/javascript">
//<![CDATA[
alert('This is a test')
//]]>
</script>
到浏览器。