Params disetel tetapi payload permintaan hilang.
[1] pry(#<Api::RegistrationsController>)> params
=> <ActionController::Parameters {"format"=>"json", "controller"=>"api/registrations", "action"=>"create"} permitted: false>
[2] pry(#<Api::RegistrationsController>)> params.require(:data)
ActionController::ParameterMissing: param is missing or the value is empty: data
Request Headers
Minta Header
Host: test.lvh.me:3000
Connection: keep-alive
Content-Length: 1038
Accept: application/vnd.api+json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Origin: http://test.lvh.me:4200
Content-Type: application/vnd.api+json
Referer: http://test.lvh.me:4200/register/individual-academics
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Muatan Mentah
{"data":{"attributes":{"first-name":"Test","last-name":"User","email":"[email protected]"}}}
Pengontrol
def registration_params
params.require(:data).permit({
attributes: [
'first-name',
'last-name',
'email',
]
})
end
Jika saya mengatur aplikasi yang sama menggunakan Rails 4.2.6/Ruby 2.3.3, ini bekerja dengan sempurna tanpa perubahan dalam muatan, jadi sepertinya ada sesuatu dengan cara Rails 5 menangani permintaan, mungkin?
Saya juga harus menyebutkan bahwa URL sumbernya adalah test.lvh.me:4200 (aplikasi bara) ke API Rails test.lvh.me:3000, jadi CORS dapat berperan di sini dalam menghapus params? Saya tidak menerima kesalahan apa pun karena tajuk tampak benar dan CORS diatur di sini untuk mengizinkan Asal apa pun melalui Rack::Cors middleware.
Versi rel :
Rel 5.0.1
versi rubi :
Ruby 2.3.3
Halo, silakan buat kasus uji gagal yang dapat dieksekusi menggunakan https://github.com/rails/rails/blob/master/guides/bug_report_templates/action_controller_gem.rb sebagai templat sehingga orang lain dapat mereproduksi dan membantu Anda memecahkan masalah.
Anda perlu menambahkan baris berikut ke config/initializers/mime_types.rb
Mime::Type.register "application/vnd.api+json", :json
Hanya ingin menindaklanjuti @vipulnsward dan @ngn01 sangat menghargai tanggapan ini. Bekerja dengan sukses, dan membantu saya memahami hubungan di antara semuanya.
Komentar yang paling membantu
Anda perlu menambahkan baris berikut ke
config/initializers/mime_types.rb
Mime::Type.register "application/vnd.api+json", :json