gpt4 book ai didi

javascript - 从数据库查询 rails 创建 JSON

转载 作者:行者123 更新时间:2023-11-28 00:14:47 24 4
gpt4 key购买 nike

我想为我的 Rails 应用程序数据创建一个强制布局图,如 here in d3

我有一个 Rails 应用程序,其中包含如下图所示的表格:

enter image description here

我想在 Controller 中创建一个表达式,它可以以所需的格式输出 JSON:

{
"user":[
{"name":"Myriel"},
{"name":"Napoleon"},
{"name":"Mlle.Baptistine"}
],
"relationship":[
{"source":1,"target":0},
{"source":2,"target":0},
{"source":3,"target":0}
]
}

我想这将涉及 Controller 中的查询 - 类似于:

class GraphController < ApplicationController
def data
render :json => User.select('name')
render :json => Relationship.select('follower_id') & Relationship.select('followed_id')
end
end

但是如何按照上面的示例将 json 输出合并为一个呢?以及如何重命名输出,以便 follower_id 成为源,followed_id 成为目标?

最佳答案

你有很多选择:

  1. 您可以构造适当的结构,然后将其传递给 render,就像这样:

    render json: {
    user: User.select('name')].map { |u|
    { name: u.name }
    },
    relationship: Relationship.select(:follower_id, :followed_id).map { |r|
    { source: r.follower_id, target: r.followed_id }
    }
    }
  2. 前一种方法可行,但可能会变得相当复杂。此时,您可能应该考虑通过单独的 View 层进行 JSON 渲染。它可以是您喜欢的任何内容:

    • ERB,这是相当奇特的,我从未在野外见过它,但仍然相当可行;您应该能够将模板命名为 show.json.erb 并从那里开始
    • 一个单独的类,将构建如选项 no 中的结构。 1 以 JSON 形式呈现,一种演示者
    • ...最后,这对我来说似乎是最合适的,一些特定于 JSON 的渲染引擎:RABL、JBuilder 或其他什么,那里有一大堆

但是,不应低估从这样的 Controller 渲染 JSON 被认为是一种坏味道。在 Controller 中包含 View 代码违背了 MVC,而 MVC 是 Rails 的基础。

这给我们留下了选项 #2 的 flavor ,无论与手头任务的复杂性相匹配(根据您自己的直觉)。

希望这有帮助!

关于javascript - 从数据库查询 rails 创建 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com