【问题标题】:How to pass json data from ruby controller to javascript (Rails 6.1)?如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?
【发布时间】:2021-08-27 10:46:47
【问题描述】:

我正在尝试将一些 json 数据从我的数据库传递到前端,以便我可以使用 javascript 操作这些数据!我首先在 home.html.erb 中创建了一些临时 json 数据,如下所示:

<%= javascript_tag do %>
    window.testJSON_data = 
    [
        {
            "name" : "Bill Gates",
            "telephone" : 123456789
        },
        {
            "name" : "Elon Musk",
            "telephone" : 987654321
        }
    ];
    console.log(testJSON_data); /* Works as expected - will print JSON data in console! */
<% end %>

上面的代码将在控制台日志上打印正确的数据和 JSON 格式。但是当我尝试以相同的方法使用我的数据库数据时,我发现了一些问题!我首先将正确的数据传递给我的家庭控制器。下面控制器中的 ruby​​ 代码将使用 render 函数打印浏览器页面上的所有数据,但显然这不是我想要做的。所以我评论了render 命令并尝试用我的home.html.erb 捕获这些数据

class HomeController < ApplicationController
  def index
    @data = EmergencyFriend.all
    @jsonData = JSON.pretty_generate(@data.as_json)

    #render json: @jsonData
  end
end

我已经尝试过这段代码,它几乎可以按我想要的方式打印数据,但不能作为对象打印。我也尝试过这些,但没有一个会将数据作为对象打印:

  • console.log(JSON.stringify('&lt;%= j @jsonData.as_json.html_safe %&gt;'));
  • console.log(JSON.stringify('&lt;%= j @jsonData.as_json %&gt;'));
  • console.log(JSON.stringify('&lt;%= j @jsonData %&gt;'));
<%= javascript_tag do %>
    console.log('<%= j @jsonData %>');
<% end %>

WILL RETURN:

[
  {
    &quot;id&quot;: 1,
    &quot;first_name&quot;: &quot;Emergency Contact&quot;,
    &quot;last_name&quot;: &quot;01&quot;,
    &quot;phone_number&quot;: 150431,
    &quot;email&quot;: &quot;user_01@email.com&quot;,
    &quot;twitter&quot;: &quot;@user01&quot;,
    &quot;created_at&quot;: &quot;2021-06-08T12:20:46.298Z&quot;,
    &quot;updated_at&quot;: &quot;2021-06-08T13:04:28.480Z&quot;,
    &quot;user_id&quot;: 1,
    &quot;country_code&quot;: &quot;CY&quot;,
    &quot;dial_code&quot;: 357
  },
  {
    ...
  },
  {
    ...
  }
]

我知道这很愚蠢,但我已经尝试了一个小时来找到解决方案,但我做不到!要么是传错了数据,要么是打印错了数据,不知道这里是哪种情况。

如何将 JSON 数据从 ruby​​ 控制器存储到 JavaScript?

【问题讨论】:

    标签: javascript ruby-on-rails json ruby


    【解决方案1】:

    对该字符串使用html_saferaw 方法。

    <%= @jsonData.to_s.html_safe %>
    

    考虑也通过 ajax 请求来获取它。

    【讨论】:

    • 好的,谢谢,现在返回一个我可以使用的对象。
    • 使用 AJAX 请求有什么特殊原因吗?有参考吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2012-05-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多