javascript - 在 JavaScript 中嵌入 ruby​​,无法识别 ruby

标签 javascript ruby-on-rails

我有一个 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/

相关文章:

javascript - 如何在 Javascript 中重写 RegExp?

javascript - 从电子邮件访问 cookie?

ruby-on-rails - 如何在 Rails 中将图像转换为链接?

ruby-on-rails - 在 Rails 中扩展模型

ruby-on-rails - rails : rendering XML adds <hash> tag

ruby-on-rails - 用于自定义验证的Shoulda Matchers with_message错误

ruby-on-rails - 为什么需要 gem 规范,为什么有些 gem 创作者不提供它们?

javascript - SetTimeout 上的工具提示仅在鼠标移动时显示

asp.net - 从 javascript 获取下拉框中的值

javascript - 函数结束后文本框值被清除(问题): JQuery