我有一个 ruby 函数创建哈希的实例变量,但在 javascript 中访问它的值时遇到问题。
这是我的 Controller :
class TransferController < ApplicationController
def index
require 'json'
#@transfers = Transfer.select("transfer_id,section_id,sum(net) as net").group("transfer_id,section_id").having("sum(net) <> ?",0).order("transfer_id ASC")
@transfers = Transfer.select("section_id,section_name,sum(net) as net").group("section_id,section_name").order("section_id ASC")
h = Hash.new()
a = []
@transfers.each do |section|
h["name"] = section.section_name
h["size"] = section.net
a.insert(h)
end
@sectionhash = Hash.new()
@sectionhash["name"] = "stringush"
@sectionhash["children"] = a
end
end
这是我的观点:
<h1><%= @sectionhash["name"] %></h1>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script type="text/javascript">
var x = <%= @sectionhash["name"] %>;
alert(x);
</script>
我得到的结果是,它向我显示了哈希值内部的值,但 JavaScript 不执行任何操作。我什至尝试在分配 ruby 代码之前放置一个警报,它起作用了。所以它在嵌入 ruby 的线上失败了。 我在这个论坛上看到有人回答我写的嵌入行是合法的。 有什么想法为什么这不起作用吗?
最佳答案
您仍然需要遵守正常的 Javascript 语法规则。
var x = <%= @sectionhash["name"] %>;
将打印:var x = stringush;
这是无效的,因为没有名为 stringush 的变量。您需要像这样引用 JS 字符串:
var x = '<%= @sectionhash["name"] %>';
这将打印:var x = 'stringush';
这就是你想要的。
关于javascript - 在 JavaScript 中嵌入 ruby,无法识别 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900387/