0

私はここでAPIに基づいてWebフックをセットアップするために働いています:http://docs.exceptional.io/api/webhooks/

私が見ている問題は、投稿されているデータが無効であるように見えることです。ログから:

Started POST "/api/1/services/exceptional/13123123123123123123123123123" for 50.16.14.195 at 2012-11-30 04:27:06 +0000
Processing by ApiV1::Services::ExceptionalController#create as XML
  Parameters: {"{\"error\":{\"id\":110938603,\"title\":\"# (Test-20) \\\"Test message-20\\\"\",\"sub_title\":null,\"app\":{\"id\":17456,\"name\":\"mysite.com\"},\"last_occurrence\":{\"id\":266224025,\"request_method\":null,\"url\":null,\"occurred_at\":\"2012-11-30T04:27:01 00:00\",\"backtrace\":null},\"environment\":null,\"first_occurred_at\":\"2012-11-30T04:27:01 00:00\",\"last_occurred_at\":\"2012-11-30T04:27:01 00:00\",\"url\":\"http://getexl.com/xasdasddsa\"}}"=>nil, "room_token"=>"123123123123213"}
Completed 500 Internal Server Error in 12ms

TypeError (can't convert Array into String):
  app/controllers/api_v1/services/exceptional_controller.rb:20:in `create'
  lib/rack/ie_redirect.rb:19:in `call'

ルート:

 match "/exceptional/:room_token" => "exceptional#create"

パラメータがレールによって破損している理由と解決方法に関するアイデアはありますか?ありがとう

コントローラーコード:

クラスApiV1::Services :: ExceptionalController <ApiV1 :: APIController

  def create
    exceptional_exception = JSON.parse(params[:error])
  end

例外的な例外は行がrb:20です

4

1 に答える 1

1

うまくいかないように見えるのは、URLを正しく作成していないことです。たとえば、実際のエラーはRailsによってキーとして解釈されます。

通常はこのように書きます

/api/1/services/exceptional/123123123?error="....<snipped the json>..."

それを解決する方法は2つあります。これを解決する最も簡単な方法は、次のように書くことです。

match '/exceptional/:room_token/:error' => 'exceptional#create'

そうすれば、何も変更する必要がなくなり、機能します。

そうしないと、上記のようにデータを正しく投稿する必要があります。

[編集:コメント後]

さて、あなたは起こっているPOSTをまったく制御できないので、元のルートに戻り、コントローラーで次のことを行います。

def create
  exceptional_exception = JSON.parse(request.body)
end

私はそれがうまくいくはずだと思いますが、完全にはわかりません。よくわかりませんが、通常はレールが自動的に処理するので、POST自体に何か問題があると思いました。

2番目の注意:あなたは一見例外的な「再構築」をしているように見えるので、errbitを検討してみませんか。

于 2012-11-30T23:17:47.017 に答える