Array的未定义方法`merge'

时间:2017-09-20 22:06:46

标签: ruby-on-rails ruby

我得到未定义的方法#merge但是#merge方法在第二个块中运行良好。 Block 1有什么问题?

# Block 1
network_posts = []
@networks.each do |network|
  network_posts << network.posts.as_json.merge('pic' => network.pic.url) 
end
# Block 2
network = []
@networks.each do |network|
  network << network.as_json.merge('pic' => network.pic.url) 
end

1 个答案:

答案 0 :(得分:2)

as_json方法没有义务返回哈希。它可以返回它想要的任何东西,一个字符串,一个数字,一个布尔值,甚至可以返回一个数组。假设支持merge是错误的。

因为这似乎是在一个数组的集合(network.posts)上运行。合并它是不切实际的。您可以合并每个记录的as_json结果:

network.posts.map do |post|
   post.as_json.merge(...)
end