0

ハッシュの配列を作成し、json 経由でコントローラーに渡します。これが私が送信しているデータとその直前のサーバー出力です。

Started POST "/api/user.json" for 127.0.0.1 at Wed Jun 27 18:52:32 -0400 2012
  Processing by Api::UsersController#create as JSON
  Parameters: {"accept"=>"json", "content_type"=>"json", "users"=>"[{\"email\":\"kirsten_gronberg@yahoo.com\"},{\"email\":\"dtsheahan@msn.com\"},{\"email\":\"clayton19361@hotmail.com\"},{\"email\":\"kumar.alka92@yahoo.com\"},{\"email\":\"j.eromes.n.d.c@gmail.com\\r\"},{\"email\":\"0\"},{\"email\":\"christine@colormepink.com\"},{\"email\":\"janabouc@gmail.com\"},{\"email\":\"carin@inkfoundry.com\"},{\"email\":\"jon.neiditz@nelsonmullins.com\"}]"}

ここに私のコントローラコードがあります:

params["users"].each { |user_params| User.create!(user_params) }

ここにエラーがあります:

Completed 500 Internal Server Error in 2ms

NoMethodError (undefined method `keys' for #<String:0x10662d660>):
  app/controllers/api/users_controller.rb:6:in `create'
  app/controllers/api/users_controller.rb:5:in `each'
  app/controllers/api/users_controller.rb:5:in `create'

ここで私に何が間違っているのか、誰にも分かりますか?

ありがとう!

4

1 に答える 1

2

を受け取った場合params[:users]、実際にはハッシュではなく文字列を受け取っています。この文字列はたまたま JSON にエンコードされています (つまり、Ruby のハッシュに似たスタイルになっています)。この文字列は、hash = JSON.parse(params[:users]).

于 2012-06-27T23:18:17.230 に答える