1

ここで私の質問に続いて。だから私はこれを使ってスマートリダイレクトをしようとしています:

get "/category/:id/merge" do
    #... setting @catalog_id and category
    call env.merge("PATH_INFO" => "/catalog/#{@catalog_id}/category/#{category.id}", "REQUEST_METHOD"=>"PATCH","QUERY_STRING"=>"merge=1")
    status 200
end

しかし、ログを見ると、イライラするだけでなく、完全にばかげていることがわかります。

# this one is from internal call
I, [2013-03-21T15:55:54.382153 #29569]  INFO -- : Processing GET /catalog/1/category/2686/merge
I, [2013-03-21T15:55:54.382239 #29569]  INFO -- : Parameters: {}
...
I, [2013-03-21T15:55:54.394992 #29569]  INFO -- : Processing PATCH /catalog/1/category/2686
I, [2013-03-21T15:55:54.395041 #29569]  INFO -- : Parameters: {"merge"=>"1"}
I, [2013-03-21T15:55:54.395560 #29569]  INFO -- : Processed PATCH /catalog/1/category/2686?merge=1 with status code 404
I, [2013-03-21T15:55:54.395669 #29569]  INFO -- : Processed GET /catalog/1/category/2686/merge with status code 200

# this one is a direct request
I, [2013-03-21T15:56:36.246535 #29588]  INFO -- : Processing PATCH /catalog/1/category/2686
I, [2013-03-21T15:56:36.246629 #29588]  INFO -- : Parameters: {"merge"=>"1"}
...
I, [2013-03-21T15:56:36.286216 #29588]  INFO -- : Processed PATCH /catalog/1/category/2686?merge=1 with status code 204

また、内部404リクエストの本文は、Sinatraの標準の404エラーページです。私が彼が受け入れ可能な204でまったく同じURLを提供しているのを見つけた場合、彼はこのルートを知らないということを、どうして私にまっすぐに伝えることができますか?

UPDATE REQUEST_METHODをGETに変更すると、さらにエキサイティングになります。これは魅力のように機能します。

I, [2013-03-21T17:09:37.718756 #3141]  INFO -- : Processing GET /catalog/1/category/2686/merge
I, [2013-03-21T17:09:37.718838 #3141]  INFO -- : Parameters: {}
...
I, [2013-03-21T17:09:37.735632 #3141]  INFO -- : Processing GET /catalog/1/category/2686
I, [2013-03-21T17:09:37.735678 #3141]  INFO -- : Parameters: {"merge"=>"1"}
...
I, [2013-03-21T17:09:37.773033 #3141]  INFO -- : Processed GET /catalog/1/category/2686?merge=1 with status code 200
I, [2013-03-21T17:09:37.773143 #3141]  INFO -- : Processed GET /catalog/1/category/2686/merge with status code 200
4

0 に答える 0