28

i have a controller that returns an array of ActiveRecord objects and a jbuilder view to generate the json (all standard stuff). works great if i want for example an array of hashes.

so for example i have:

json.array!(@list) do |l|
    json.( l, :field )
end

which returns

[
  { "field": "one" },
  { "field": "two" },
  { "field": "three" }
]

however, i want just an array of strings; such that my json is

[
  "one",
  "two",
  "three"
]

whats should my jbuilder file be?

2 Answers 2

60

A bit late but this will work:

json.array! @list

But consider to use it in a block to create a JSON pair:

json.data do
  json.array! @list  
end

# => { "data" : [ "item1", "item2", "item3" ] }
Sign up to request clarification or add additional context in comments.

4 Comments

thanks for the reply: i get a 'nil is not a symbol' error when trying either suggestion. however, when i do json.array! @devices do |d| json.i d.device end, it works (however, i have an array of anon hashes with single key 'i' then)
Just try to create an Array of strings like @devices.collect { |d| d.device } and use this array to create the json.
You can also use pluck like @devices.pluck :device
What if you want to grab things out of an object to put into an array?
6

If you want Array as a value for some key, this will work:

json.some_key [1, 3, 4]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.