【问题标题】:undefined method `with_indifferent_access' for #<Array:#<Array: 的未定义方法 `with_indifferent_access'
【发布时间】:2017-11-05 05:34:21
【问题描述】:

我尝试了很多方法,但都不起作用。我在这个项目中,另一个具有相同代码的控制器工作,另一个使用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

控制器中的强参数:

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 时,我收到错误消息> #Array 的未定义方法 `with_indifferent_access':在这一行

@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" }
    ]
}}

有人给我一盏灯?谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您在输入中创建了 endereco_attributes 一个数组,而不是一个对象(然后在 Ruby 中成为一个哈希)。因为它是一个单数 (belongs_to) 关联,Rails 期望它是一个哈希,而不是一个哈希数组。数组没有with_indifferent_access的方法,但是Hash有。

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

    【讨论】:

    • 用户只能通过json注册,我还是不是很明白,我把endereco_attributes改成了只有endereco,这次我有return Endereco(#42380200),得到了Array(#18448440 )
    【解决方案2】:

    我的 json 是错误的......我在哪里 [] 不应该

     "endereco_attributes": [{... }]
    

    正确

      "endereco_attributes": {... }
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多