0

我正在添加一个 AngularJS 1.0.8 应用程序,它正在向 Rails 3.2.13 服务器发出 POST 请求。我今天早些时候做了一些非常相似的事情,结果略有不同。

例如,主要资源将是 Person(name:string)。

在前面的尝试中,Rails 处理提交的用于创建新 Person 实例的属性如下: {"name"=>"John", "person"=>{"name"=>"John"}}

在后面的尝试中,提交的属性被处理如下:{"name"=>"John", "person"=>{}}

在来自我的浏览器的出站请求中,请求正文看起来相同:{"name":"John"}

我想知道 Rails 的哪一部分决定嵌套参数使用什么,这样我就可以弄清楚为什么这两种实现看起来不同。

4

1 回答 1

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

于 2013-10-21T04:32:18.000 回答