【发布时间】:2015-10-31 22:59:15
【问题描述】:
在 Ruby on Rails 4 中,我试图为我的网站创建一个 API,而不是像这样使用数组:
[{id: 1, name: "John"}, {id: 2, name: "Foo"}, {id: 3, name: "Bar"}]
我想这样渲染它,因为它可以更容易地在 javascript 中搜索(以及其他原因):
{"1": {id: 1, name: "John"}, "2": {id: 2, name: "Foo"}, "3": {id: 3, name: "Bar"}}
这行得通:
# users/index.rabl
@users.each do |user|
node(users.id.to_s) do
partial('api/v1/users/show', object: user)
end
end
但在部分中,我想要另一个元素集合(属于用户),但我无法让它工作。有没有更优雅的方法来做到这一点?
【问题讨论】:
-
id等动态键对于 API 来说是一个糟糕的选择。它很难解析其他资源,因为它是动态的。恕我直言 -
@Зелёный 你为什么这么认为?我自己也问过,但我实在想不出任何理由。例如,它使我的 javascript 变得更容易。现在我可以在另一个模型具有
user_id属性时执行users[1],而不是遍历所有用户。 -
我只是说说我的看法,因为我已经构建了一个 api 并使用名称做出选择键,另一方面 IOS 应用程序无法仅通过硬编码名称解析动态键。这只是我的意见。对于您的情况,这完全取决于您的应用程序设计。仅当用户数超过 100_000 时,循环遍历所有用户会让您感到难过,但在这里您可以将其分成几部分。简单的方法并不总是好方法。
-
您找到解决方案了吗?那个集合是什么元素的另一个集合?请分享什么不适合你?
-
我现在正在使用Jbuilder,这使得动态键非常容易:stackoverflow.com/questions/18154252/…
标签: ruby-on-rails json rabl