如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?

Posted

技术标签:

【中文标题】如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?【英文标题】:How to pass json data from ruby controller to 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?

【问题讨论】:

【参考方案1】:

对该字符串使用html_saferaw 方法。

<%= @jsonData.to_s.html_safe %>

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

【讨论】:

好的,谢谢,现在返回一个我可以使用的对象。 使用 AJAX 请求有什么特殊原因吗?有参考吗?

以上是关于如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 数据从登录视图传递到多个视图控制器,是不是可能?

如何使用 post 方法将 JSON 数据从登录功能传递到另一个视图控制器?

如何将 Json 对象从 ajax 传递到 spring mvc 控制器?

如何将 JSON 值从一个 ViewController 传递到另一个

Ruby如何将值从单选按钮传递到控制器方法

如何将对象类型的 json 数组传递给 MVC 控制器类