Ruby on rails Rails wrap_参数改变了行为,在一个控制器上工作而不在另一个控制器上工作
我有两个不同的控制器,都继承自Ruby on rails Rails wrap_参数改变了行为,在一个控制器上工作而不在另一个控制器上工作,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有两个不同的控制器,都继承自ApplicationController,class-PagesController
ApplicationController
,class-PagesController
和class-CommentsController
在页面#test上发布
将所有发布的参数复制到另一个散列属性:
# POST '/pages/test' :
{ "awd":"awd" }
# result :
{
"awd": "awd",
"action": "test_post",
"controller": "pages",
"page": {
"awd": "awd"
}
}
# POST '/comments' :
{"awd":"awd"}
# result :
{
"awd": "awd",
"action": "create",
"controller": "comments",
"comment": {}
}
注释路由由资源创建:注释,仅:[:创建]
,发布“/comments”=>“comments”#创建“
执行相同的操作
注意:No在\u filter
或其中任何一个中的任何额外代码之前,所有请求都是json,wrap\u参数。rb
具有wrap\u参数格式:[:json]
编辑
这些控制器之间只有一个区别,commentscoontroller
使用rails g scaffold…
生成,而PagesController
使用rails g controller…
编辑2
CommentsController
self.\u wrapper\u options
中的self.\u wrapper\u options
的值为
{
"format": [
"json"
],
"include": [
"_id",
"created_at",
"updated_at",
"content",
],
"name": "comment"
}
这就产生了问题,但是为什么当我没有设置include in wrap_参数时,rails添加了这个参数呢
在没有:include或:exclude选项集的ActiveRecord模型上,它
将仅包装类方法返回的参数
属性名称
我猜“awd”是页面模型上的一个属性,而不是评论模型上的属性。如果您真的想将该JSON发送到comments控制器,请尝试添加如下内容:
wrap\u参数:注释,包括:[:awd]