2017-09-20 8 views
0

私は未定義のメソッド#mergeを取得していますが、#mergeメソッドは2番目のブロックでうまくいきます。ブロック1の何が問題なの?配列のための未定義のメソッド `merge '

ブロック1

network_posts = [] 
    @networks.each { |network| 
     network_posts << network.posts.as_json 
          .merge('pic' => network.pic.url) 
    } 

ブロック2

network = [] 
    @networks.each { |network| 
     network << network.as_json 
          .merge('pic' => network.pic.url) 
    } 

答えて

2

as_json方法はハッシュを返すように義務付けていません。文字列、数値、ブール値、さらには配列のようなものを返すことができます。それがサポートされていると仮定すると、mergeは間違いです。

これは配列になるコレクション(network.posts)で動作しているようです。それをマージすることは現実的ではありません。あなたは、各レコードのas_json結果にでマージできます。

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

ねえが、内部のコードが一部が欠落しているマージあなたが ''でそれをmap'た場合、どのようにそれは 'network.pic.url'をフェッチする必要があります|ポスト|' – Ranjan

+0

'network'がその文脈で有効であるのと全く同じ働きをします。簡潔さのために削除されています。 – tadman

関連する問題