在rails json渲染中,如何显示特定属性的不同键名称

发布于 2025-01-02 02:56:13 字数 540 浏览 0 评论 0原文

我使用 Mongoid 作为后端,我需要返回带有“id”属性的 json,而不是 mongoid 使用的默认“_id”,

例如,我现在

[{
  "_id": "4f2d8b971773eb18e6000001",
  "name": "Scooter"
}, {
  "_id": "4f2d8d9f1773eb18fd000001",
  "name": "Coldplay"
}]

从调用 render:

  format.json { render :json => @groups, only:[:name, :_id] }

但需要,

[{
  "id": "4f2d8b971773eb18e6000001",
  "name": "Scooter"
}, {
  "id": "4f2d8d9f1773eb18fd000001",
  "name": "Coldplay"
}]

有什么快捷方式吗?

谢谢你!!

I am using Mongoid as my backend and I am in need to return json with an "id" attribute instead of the default "_id" used by mongoid

for instance, I have now

[{
  "_id": "4f2d8b971773eb18e6000001",
  "name": "Scooter"
}, {
  "_id": "4f2d8d9f1773eb18fd000001",
  "name": "Coldplay"
}]

from a call to render:

  format.json { render :json => @groups, only:[:name, :_id] }

but need,

[{
  "id": "4f2d8b971773eb18e6000001",
  "name": "Scooter"
}, {
  "id": "4f2d8d9f1773eb18fd000001",
  "name": "Coldplay"
}]

Any shortcuts?

Thank you!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧城烟雨 2025-01-09 02:56:13

如果您能够为 _id 添加一个名为 id 的属性访问器,那么通过覆盖模型中的 as_json 就可以轻松解决这个问题。

def id
  self._id
end

def as_json(options={})
  options.merge!(:except => :_id, :methods => :id)
  super(options)
end

更新:使重写对父方法更加友好。

If you're able to add an attribute accessor for _id called just id, then this should be easily solved by overriding as_json in your model.

def id
  self._id
end

def as_json(options={})
  options.merge!(:except => :_id, :methods => :id)
  super(options)
end

Update: Made the override a bit more friendly to the parent method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文