【发布时间】:2013-02-13 22:38:29
【问题描述】:
我已经为我的网站编写了一个 Rest api。目前我拥有它,以便用户拥有许多他们可以拥有的计算机。我正在尝试发送一个 json 有效负载,以使用计算机更新用户帐户。为了测试这是我发送的:
{"auth_token"=>"AiprpscAqN6hnvNDHSwh",
"user"=>"{"id":1,
"username":"Rizowski",
"email":"test@gmail.com",
"computer":[{"id":0,
"user_id":1,
"name":"Desktop",
"enviroment":"Windows 8",
"ip_address":"192.168.1.10",
"account":[]}]}",
"format"=>"json",
"id"=>"1"}
一旦我发送它,Rails 控制器就会接收它并使用 JSON.parse 方法将请求解析为哈希。一旦我尝试保存用户对象,它会说:
ActiveRecord::AssociationTypeMismatch in Api::V1::UsersController#update
Computer(#51701664) expected, got Hash(#17322756)
附带问题:我仍在尝试完全理解 rails 和 rest,但是像我一样发送计算机对象是一个好习惯吗?或者我应该通过我的计算机 api 控制器发送计算机数据吗?
【问题讨论】:
-
您不想保存哈希,您需要从中创建一个对象。最后一个问题有点荒谬;您正在调用 REST API,您只能发送端点可以理解的数据(例如 JSON、XML、表单数据等)。您正在通过 API 控制器发送。
-
顺便说一句,您在此处显示的数据无效,用户周围的双引号将使其成为无效哈希。你在这里把多个东西拼接在一起吗?
-
@DanielEvans 是的,我正在尝试发送 1 个对象(用户)以及与该用户关联的计算机列表。
-
@DaveNewton 抱歉,我的意思是按我的方式发送 JSON。
标签: ruby-on-rails json rest