gpt4 book ai didi

ruby-on-rails - RABL - 子节点内的属性

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:37 24 4
gpt4 key购买 nike

如果我使用 node() 方法在 RABL 中创建子节点,我如何控制呈现的属性?

JSON 输出是这样的:

[
{
"location": {
"latitude": 33333,
"longitude": 44444,
"address": "xxxxxxx",
"title": "yyyy",
"url": "http://www.google.com",
"rate": {
"created_at": "2012-09-02T11:13:13Z",
"id": 1,
"location_id": 1,
"pair": "zzzzzz",
"updated_at": "2012-09-02T12:55:28Z",
"value": 1.5643
}
}
}
]

我想去掉 created_at、updated_at 和 location_id 属性。

我的 View 文件中有这个:

collection @locations
attributes :latitude, :longitude, :address, :title, :url
node (:rate) do
|location| location.rates.where(:pair => @pair).first
end

我尝试使用部分方法和“扩展”方法,但它完全搞砸了。此外,我尝试向 block 添加属性,但没有成功(输出如属性中指定的那样,但未显示每个属性的值)。

谢谢!

最佳答案

您的代码:location.rates.where(:pair => @pair).first 返回整个 Rate 对象。如果您想要特定字段(例如:除 create_at、updated_at 等之外的所有字段),那么您有两个选择:

手动在node()中描述hash:

node (:rate) do |location|  
loc = location.rates.where(:pair => @pair).first
{ :pair => loc.pair, :value => loc.value, etc... }
end

或者您可以这样做:

node (:rate) do |location|  
location.rates.where(:pair => @pair).select('pair, value, etc...').first
end

...作为旁注,我应该说在您的 View 中放置逻辑 (rates.where) 不是最佳做法。看看您的 Controller 是否可以使用 Rate 模型为 View 执行此操作。

关于ruby-on-rails - RABL - 子节点内的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12286561/

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