Content-Type başlığını için "application/json" ayarlayarak bu aşabiliriz. Denetleyicinin, Accept üstbilgisi "application/json" olarak ayarlandığında, ne beklemeyi beklediğini bilmesini sağlayabilirsiniz.
hem başlıklarıyla aşağıdaki komutu:
curl -d '{ "company": { "name": "acme", "address": "123 Carrot Street" } }' http://0.0.0.0:3000/mysite --header "Accept: application/json" --header "Content-Type: application/json"
günlüklerinde bu üretir:
curl -d '{ "company": { "name": "acme", "address": "123 Carrot Street" } }' http://0.0.0.0:3000/mysite --header "Accept: application/json"
bu üretir: Kabul başlığıyla
Started POST "/mysite" for 127.0.0.1 at 2012-01-11 16:09:48 -0800
Processing by MyController#create as JSON
Parameters: {"company"=>{"name"=>"acme", "address"=>"123 Carrot Street"}, "wassup"=>{"company"=>{"name"=>"acme", "address"=>"123 Carrot Street"}, "controller"=>"wassup", "action"=>"create"}}
Completed 200 OK in 5ms (Views: 2.0ms | ActiveRecord: 0.0ms)
Bu komut günlükler:
Started POST "/mysite" for 127.0.0.1 at 2012-01-11 16:07:26 -0800
Processing by MyController#create as JSON
Parameters: {"{ \"company\": { \"name\": \"acme\", \"address\": \"123 Carrot Street\" } }"=>nil}
Completed 200 OK in 7ms (Views: 5.0ms | ActiveRecord: 0.0ms)
Ve nihayet Content-Type başlığıyla bu komut:
Started POST "/mysite" for 127.0.0.1 at 2012-01-11 16:08:11 -0800
Processing by MyController#create as */*
Parameters: {"company"=>{"name"=>"acme", "address"=>"123 Carrot Street"}, "wassup"=>{"company"=>{"name"=>"acme", "address"=>"123 Carrot Street"}, "controller"=>"wassup", "action"=>"create"}}
Completed 200 OK in 4ms (Views: 2.0ms | ActiveRecord: 0.0ms)
Bildirimi her biriyle ustaca çözümlenen parametreler ve işleme mesajı değişimi:
curl -d '{ "company": { "name": "acme", "address": "123 Carrot Street" } }' http://0.0.0.0:3000/mysite --header "Content-Type: application/json"
bu günlükleri üretir başlık türü.
Bunu yaparken (tek boynuzlu at) Ben bir anahtar olarak params içine dahil isteğin gövdesi: '{'theBodyOfRequest' => nil,: controller => users,: action => 'update'}' Bağlı Kullanım durumunuz bu sorunlara neden olabilir. İlk param olduğu gibi, onu kaldırmak için params.shift özelliğini ekledim. – Peter
@collin, evet - POSTing olan veriler aslen JSON '{: foo =>" bar "}' dır (gönderilmek üzere gönderilmiştir), böylece denetleyicideki paramlar şöyle görünür: '{" {\ "foo \" => \ "bar \"} => nil, "controller" => "users" ...} ' – Peter
@Peter, bu soruda anlattığım asıl sorun gibi geliyor, değil mi? filtreniz çalışıyor? – colllin