如何将 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('<%= j @jsonData.as_json.html_safe %>'));
console.log(JSON.stringify('<%= j @jsonData.as_json %>'));
console.log(JSON.stringify('<%= j @jsonData %>'));
<%= javascript_tag do %>
console.log('<%= j @jsonData %>');
<% end %>
WILL RETURN:
[
"id": 1,
"first_name": "Emergency Contact",
"last_name": "01",
"phone_number": 150431,
"email": "user_01@email.com",
"twitter": "@user01",
"created_at": "2021-06-08T12:20:46.298Z",
"updated_at": "2021-06-08T13:04:28.480Z",
"user_id": 1,
"country_code": "CY",
"dial_code": 357
,
...
,
...
]
我知道这很愚蠢,但我已经尝试了一个小时来找到解决方案,但我做不到!要么是传错了数据,要么是打印错了数据,不知道这里是哪种情况。
如何将 JSON 数据从 ruby 控制器存储到 JavaScript?
【问题讨论】:
【参考方案1】:对该字符串使用html_safe
或raw
方法。
<%= @jsonData.to_s.html_safe %>
考虑也通过 ajax 请求来获取它。
【讨论】:
好的,谢谢,现在返回一个我可以使用的对象。 使用 AJAX 请求有什么特殊原因吗?有参考吗?以上是关于如何将 json 数据从 ruby 控制器传递到 javascript (Rails 6.1)?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSON 数据从登录视图传递到多个视图控制器,是不是可能?
如何使用 post 方法将 JSON 数据从登录功能传递到另一个视图控制器?
如何将 Json 对象从 ajax 传递到 spring mvc 控制器?