我正在使用AngularJS 1.0.8应用程序,它正在向Rails 3.2.13服务器发出POST请求。我今天早些时候做了一些非常相似的事情,结果略有不同。
为了举例,主要资源是Person(name:string)。
在之前的尝试中,用于创建新Person实例的提交属性由Rails处理如下:{“name”=>“John”,“person”=> {“name”=>“John “}}
在稍后的尝试中,提交的属性按如下方式处理:{“name”=>“John”,“person”=> {}}
在我的浏览器的出站请求中,请求正文看起来完全相同:{“name”:“John”}
我想知道Rails的哪一部分决定嵌套参数的用途,以便我可以弄清楚为什么这两个实现看起来有所不同。
答案 0 :(得分:0)
事实证明,较新版本的模型上的attr_accessor字段与使用客户端POST发送的字段不对应。 Rails正在使用这些字段来填充此类请求的嵌套参数。
class Person
attr_accessor :name
end
# request body for a POST to /people
{"name":"John","age":"23"}
# request parsed and nested in Rails route
{"name"=>"John", "age"=>"23", "person"=>{"name":"John"}}
根据我在相关嵌套参数问题和文档中所读到的内容,我的假设是ActiveRecord模型上的字段和关联用于决定嵌套参数的结构。