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 模板或不渲染它?

使Jbuilder与Rails 5 API模式一起工作

ruby on rails 4 - 捆绑安装grape-jbuilder

如何使用 Jbuilder & Rails 生成自定义 json 响应

Rails jbuilder DateTime将小数添加到秒