什么在Rails中构建嵌套参数?

时间:2013-10-21 03:26:42

标签: ruby-on-rails angularjs post

我正在使用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的哪一部分决定嵌套参数的用途,以便我可以弄清楚为什么这两个实现看起来有所不同。

1 个答案:

答案 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模型上的字段和关联用于决定嵌套参数的结构。