【问题标题】:Pass Rails JSON variable to javascript variable将 Rails JSON 变量传递给 javascript 变量
【发布时间】:2014-03-15 08:34:29
【问题描述】:

我的 Ruby on Rails 控制器中有一个全局 JSON 变量。 看起来像这样 @rails_side_json = { :name => 'Will', :age => 23 }.to_json

我希望将其分配给我的 javascript 变量 (var javascript_side_json),该变量位于我的名为 custom.js.erb 的 javascript 文件中

赋值完成后javascript_side_json变量中的值应该和我写的一样 var javascript_side_json = {"name": "Will", "age": 23 };

我无法通过编写 var javascript_side_json =

来实现这一点

我怎样才能做到这一点? 我需要对多个文件进行更改吗?

【问题讨论】:

    标签: javascript ruby-on-rails json erb


    【解决方案1】:

    你快完成了。只需要确保你的 json 是安全的 html:

    var javascript_side_json = <%= @rails_side_json.html_safe %>;
    

    var javascript_side_json = <%=raw @rails_side_json %>;
    

    【讨论】:

    • 这对我很有用。 Rails 5,erb 视图模板,将签名传递给 js 以在视图中显示。我正在使用github.com/tomichj/signature-pad-rails
    • 我认为您的解释可能有点误导。您不确定 JSON 是安全的(因为它没有进行消毒)。你正在做的是告诉栏杆它是安全的,而不是逃避它。这很重要的原因是,如果有人看到这一点,他们可能会认为他们可以使用#html_safe 来清理用户输入。 (恕我直言,这是 rails 的一个非常误导性的方法名称)
    【解决方案2】:

    默认情况下会转义 JSON。您可以使用 raw 告诉视图在代码中使用

    var javascript_side_json = <%= raw @rails_side_json %>
    

    【讨论】:

      【解决方案3】:

      以上答案对我不起作用。因此,我发布了一个对我有用的解决方案。

      # Rails
      @server_variable = some_variable.to_json.html_safe
      
      
      // Javascript
      let var = JSON.parse('<%= escape_javascript(@server_variable)  %>')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 2014-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多