Ruby on rails 更改Rails中POST的JSON属性名称?

Ruby on rails 更改Rails中POST的JSON属性名称?,ruby-on-rails,json,api,Ruby On Rails,Json,Api,因此,Rails API应该接受一个JSON post { "post": { "users": [{"name": "James"}]} } 现在的问题是,我正在使用嵌套的_属性,在Post模型中,我有一行: `accepts_nested_attributes_for :users` 我如何在帖子中接受属性名“users”而不是“users\u attributes” posts\u controller.rb def create @post = Post.new(post

因此,Rails API应该接受一个JSON post

{
"post": {  "users": [{"name": "James"}]}
}
现在的问题是,我正在使用嵌套的_属性,在Post模型中,我有一行:

     `accepts_nested_attributes_for :users`
我如何在帖子中接受属性名“users”而不是“users\u attributes”

posts\u controller.rb

def create
@post = Post.new(post_params)
users = params.values[0].delete(:users_attributes)
params.values[0][:users] = users


if @post.save
  render json: @post, status: :created, location: @post
else
  render json: @post.errors, status: :unprocessable_entity
end
end

你可以试试这个

假设你的情妇是

params = { post: {
name: 'war', users_attributes: [
{ title: 'Ruby documentation browser!' },
{ title: 'the modern citizen' },
{ title: '', destroy: '1' }]}}

users = params.values[0].delete(:users_attributes)
params.values[0][:users] = users

您是否尝试将其添加到模型中作为
attr\u accessible:name,:users\u attributes
@Sontya,我已经这样做了,但这不是问题所在,我想接受称其为“users”的JSON请求,而不是“users\u attributes”,请尝试以下
params={post:{user\u attributes:{id:'20',name:'war}}}post.update params[:post]
post=post.create(params[:post])
然后你可以调用
post.users
@Sontya我想用JSON像这样发布{“post”:{“users”:[{…}}}}但是目前唯一有效的方法是,{“post”:{“users\u attributes”:[{…}}}如何在Rails控制器中更改此名称?在控制器的末尾将有一个
private
方法
def post\u params.require(:post).permit(:name)end
类似这样的东西,它在哪里不起作用。我只是想说清楚,发布时“users\u attributes”会起作用,但我只想使用“users”这个名称,这应该会起作用,对我来说是有效的。请看,我更新了它。问题是当有人使用JSON发布时,如果{post:{name:'war',users:[{…}]},users_属性将工作参数的值将是
{:post=>{:name=>“war”,:users=>[{:title=>“Ruby文档浏览器!”,{:title=>“现代公民”},{:title=>,:destroy=>“1}
是的,好的,所以我把代码放在我的Create方法中,但是它抛出了一个错误。def Create“@post=post.new(package\u params)users=params.values[0]。删除(:users\u attributes)params.values[0][:users]=users”
params = { post: {
name: 'war', users_attributes: [
{ title: 'Ruby documentation browser!' },
{ title: 'the modern citizen' },
{ title: '', destroy: '1' }]}}

users = params.values[0].delete(:users_attributes)
params.values[0][:users] = users