gpt4 book ai didi

ruby-on-rails - #
转载 作者:数据小太阳 更新时间:2023-10-29 08:18:05 25 4
gpt4 key购买 nike

我试过很多方法,但都不管用。我在这个项目中有另一个具有相同代码的 Controller ,不同之处在于另一个使用 has_many 关系,而有问题的是 has_one 和 belongs_to。让我们转到代码。

class Endereco < ActiveRecord::Base
has_one :user
end

class User < ActiveRecord::Base
belongs_to :endereco
accepts_nested_attributes_for :endereco

controller中的strong参数:

class Backoffice::UsersController < BackofficeController

def create
@user = User.new(params_user)
respond_to do |format|
if @user.save!
format.json { render json: @user, include: :endereco}
else
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end



def params_user
params.require(:user).permit(:nome,
:email,
:password,
:password_confirmation,
:cpf,
:tel_fixo,
:tel_cel,
endereco_attributes: [
:rua,
:bairro,
:cidade,
:uf,
:cep,
:referencia,
:numero,
:complemento
])
end

当我通过 POSTMAN 发送此 json 时,出现错误> undefined method `with_indifferent_access' for #Array: on this line

@user = User.new(params_user)

{   "user":{
"nome" : "teste1",
"email" : "teste@tt.com",
"password": "123",
"password_confirmation": "123",
"cpf": "123321",
"tel_fixo": "123321",
"tel_cel": "asdsd",
"endereco_attributes": [
{
"rua": "tt",
"bairro": "tete",
"cidade": "asdas",
"uf":"asdasd",
"cep": "12321",
"referencia": "asdasd",
"numero":"123",
"complemento":"123" }
]
}}

有人给我一盏灯吗?谢谢!

最佳答案

您在输入中将 endereco_attributes 设为数组,而不是对象(然后在 Ruby 中变成哈希)。由于它是一个单一的 (belongs_to) 关联,Rails 期望它是一个散列,而不是一个散列数组。 Array 没有 with_indifferent_access 方法,但 Hash 有。

更改您的输入以匹配正确的结构,一切都应该很好。

关于ruby-on-rails - #<Array : 的未定义方法 `with_indifferent_access',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114258/

25 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com