【问题标题】:Ruby on Rails - can't store an array of hashes in the modelRuby on Rails - 无法在模型中存储哈希数组
【发布时间】:2012-06-28 07:18:17
【问题描述】:

我正在创建一个哈希数组并通过 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| 用户创建!(用户参数) }

这是错误:

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'

有没有人知道我这里可能发生了什么问题?

谢谢!

【问题讨论】:

  • 检查时 user_param 的外观如何?

标签: ruby-on-rails ruby json


【解决方案1】:

当您收到params[:users] 时,实际上您收到的是字符串而不是哈希。这个字符串恰好是用 JSON 编码的(即,以带有 Ruby 哈希相似的样式。)您必须通过诸如 hash = JSON.parse(params[:users]) 之类的方法将此字符串转换为您的哈希。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多