2017-04-03 7 views
0

私はシンプルなSinatraアプリケーションを実行しています。データを照会し、POST用のJSONを処理用にWebHook URLに送信する必要があります。 HTTPartyで取得したレコードを適切にフォーマットする方法がわかりません。HTTParty経由のActiveRecordクエリのPOST結果が得られません

連絡先は/account/{account_id}/contacts.jsonに印刷しています。どのようにしたいのですか、データは正常に送信されていません。

app.rb

get "/account/:account_id/contacts.json" do 
    @contacts = Contact.where("sfid = ?", params[:account_id]) 
    HTTParty.post("https://hooks.webapp.com/hooks/catch/387409/1us4j3/", 
    { 
    :body => [ @contacts ].to_json, 
    :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} 
    }) 
    @contacts.to_json 
end 
+0

まず、どのように差がありますデータは '@ contacts.to_json'と' [@contacts] .to_json'をどのように送信しているのでしょうか?それは問題になる可能性があります。しかし、そうでない場合は、送信されていないことをどのように確信しているかについてより多くの情報が必要です。 –

+0

'where'はすでに配列を変数@ contactsに返します。したがって、 '@ contacts'の型は既に配列です。私は、jsonに変換する前に配列に再度変換する必要はないと思う。 ':body => @ contacts.to_json'は大丈夫です。 – Mayank

+0

@AndréGuimarãesSakata私は、送信ルートがあるので、送信していないと確信しています。 HTTParty.post( "https://hooks.webapp.com/hooks/catch/387409/1us4j3/"、 { :body => {'Content-Type' => 'application/json'、 'Accept' => 'application =>'値1 '、:プライバシー=>'値2 '}] .to_json、 :/json '} }) 正常に実行され、webhookによって捕捉されます。私の質問に投稿したコードは捕まえられません。 – csakon

答えて

1

エラーが

2.3.1/libに/ルビー/ 2.3.0 /ネット/ HTTP/generic_request.rbようです:183:中`send_request_with_body '

あなたのリクエストには本文が見つかりません。あなたはハッシュの中でパラメーターの本文と頭を送信しています。

これを試してみてください:

get "/account/:account_id/contacts.json" do 
    @contacts = Contact.where("sfid = ?", params[:account_id]) 
    HTTParty.post("https://hooks.webapp.com/hooks/catch/387409/1us4j3/", 
    :body => @contacts.to_json, 
    :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} 
) 
    @contacts.to_json 
end 

あなたはHTTPポストこのことができますHere

希望に関するすべての詳細についても、この記事をチェックアウトすることができます。..

+0

あなたのお手伝いをしてくれました – csakon

関連する問題