rails jbuilder - 只是一个字符串数组
Posted
技术标签:
【中文标题】rails jbuilder - 只是一个字符串数组【英文标题】:rails jbuilder - just an array of strings 【发布时间】:2013-05-03 06:03:45 【问题描述】:我有一个控制器,它返回一个 ActiveRecord 对象数组和一个 jbuilder 视图来生成 json(所有标准的东西)。如果我想要一个哈希数组,效果很好。
所以例如我有:
json.array!(@list) do |l|
json.( l, :field )
end
返回
[
"field": "one" ,
"field": "two" ,
"field": "three"
]
但是,我只想要一个字符串数组;这样我的 json 是
[
"one",
"two",
"three"
]
我的 jbuilder 文件应该是什么?
【问题讨论】:
【参考方案1】:有点晚了,但这会奏效:
json.array! @list
但考虑在一个块中使用它来创建一个 JSON 对:
json.data do
json.array! @list
end
# => "data" : [ "item1", "item2", "item3" ]
【讨论】:
感谢您的回复:在尝试任一建议时,我都会收到“nil 不是符号”错误。但是,当我执行json.array! @devices do |d| json.i d.device end
时,它可以工作(但是,我有一个带有单键“i”的匿名哈希数组)
尝试创建一个字符串数组,如@devices.collect |d| d.device
,并使用该数组创建json。
你也可以像@devices.pluck :device
这样使用pluck
如果你想从一个对象中抓取一些东西放入一个数组中怎么办?【参考方案2】:
如果您希望 Array 作为某个键的值,这将起作用:
json.some_key [1, 3, 4]
【讨论】:
以上是关于rails jbuilder - 只是一个字符串数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jbuilder 中使用带有 Gon gem 的 Rails 助手?
为啥 Rails 找不到我的 jbuilder 模板或不渲染它?
ruby on rails 4 - 捆绑安装grape-jbuilder