【问题标题】:Pass Ruby JSON variable to javascript variable将 Ruby JSON 变量传递给 javascript 变量
【发布时间】:2016-08-02 12:18:39
【问题描述】:

我创建了 index.html.erb 文件并在其中包含 ruby​​/html 代码,并且文件在本地主机的 webrick 服务器上运行不使用 rails

我的 Ruby 代码中有一个全局 JSON 变量。它看起来像这样:

@ruby_side_json = [{ :name => 'Will', :age => 23 },{ :name => 'John', :age => 30 }].to_json

我希望将其分配给驻留在脚本中的我的 javascript 变量

写不成功:var javascript_side_json = <%= @ruby_side_json %>

我怎样才能做到这一点?

【问题讨论】:

  • 你得到什么错误?
  • 当您输入javascript_side_json 时,您在浏览器控制台中看到了什么?
  • [Object{ :name => 'Will', :age => 23 },Object{ :name => 'John', :age => 30 }]
  • 试试.. var javascript_side_json = JSON.parse();
  • 一般来说,您可能希望将 json 传递给一些元标记/数据属性,而不是使用内联 javascript,例如在您的应用程序布局中 。还有一个名为 gon github.com/gazay/gon 的 gem,它的功能基本相同,但通过更方便的 api。

标签: javascript ruby-on-rails ruby json


【解决方案1】:

如果你在脚本标签中使用rails标签,它应该用单引号或双引号引起来。

更改您的代码,如下所示:

var javascript_side_json = '';

【讨论】:

    【解决方案2】:

    在您描述的环境中,我可以看到它工作的唯一方法是直接在 html 中创建一个 <script> 标记并将其呈现在顶部,在任何 javascript 需要标记之前。

    像这样:

    <head>
      <script>
        var javascript_side_json = <%= @rails_side_json %>
      </script>
    </head>
    

    也就是说,它有点难看,但应该可以;如果你不把它放在 JS 的 require 标签之前,那么当你尝试执行一些需要它的 JS 时,数据就不会在那里。

    【讨论】:

      【解决方案3】:

      假设您没有使用 Rails,并且您的 to_json 实现正在正确生成 JSON。然后尝试这样做:

      <script>    
        var javascript_side_json = <%= @rails_side_json %>;
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-07
        • 2014-01-11
        • 2011-06-12
        相关资源
        最近更新 更多