【发布时间】: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?
【问题讨论】:
标签: javascript ruby-on-rails json ruby