2015-03-27 1 views
0

Я пытаюсь создать объект из вложенного json. Но я получаю ошибку AssociationTypeMismatch. Я новичок в рубине на рельсах и не уверен, это правильный способ сделать это. Я благодарен за любые советы.

Ошибка появляется в этой строке "@ avatar.from_json (JSON)" в avatars_controller.rbAssociationTypeMismatch (Пользователь (# 301360) ожидается, получил Hash (# 88300)) в Rails


Avatar.rb

class Avatar < ActiveRecord::Base 
    has_one :user 
    accepts_nested_attributes_for :user 
end 


User.rb

class User < ActiveRecord::Base 
    belongs_to :avatar 
end 


js на

[ 
{ 
    "id": 7, 
    "user": { 
     "id": 47, 
     "gender": "male", 
     "name": "Mark", 
     "created_at": "2015-01-07T11:44:50.991Z", 
     "updated_at": "2015-01-28T14:39:03.900Z" 
    }, 
    "login_counter": 5, 
    "created_at": "2015-01-28T14:39:03.896Z", 
    "updated_at": "2015-03-03T12:11:43.432Z" 
} 
] 


avatars_controller.rb

def get_data_button 
    json= open("http...").read 
    @avatar = Avatar.new 
    @avatar.from_json(json) 

    respond_to do |format| 
    if @avatar.save 
     format.html { redirect_to user_url } 
    else 
     format.html { render :new } 
    end 
    end 
end 

def avatar_params 
    params.require(:avatar).permit(:login_counter, user: [:gender, :name]) 
end 
+0

Где именно? –

+0

изменить эту строку 'params.require (: avatar) .permit (: login_counter, user_attributes: [: пол,: name])' ... –

+0

@DaveNewton Исключение появляется в этой строке «@ avatar.from_json (json)» – freshgrand

ответ

0

Пожалуйста, попробуйте как этот код.

params.require(:avatar).permit(:login_counter, user_attributes: [:gender, :name]) 

[ 
{ 
"id": 7, 
"user_attributes": { 
    "id": 47, 
    "gender": "male", 
    "name": "Mark", 
    "created_at": "2015-01-07T11:44:50.991Z", 
    "updated_at": "2015-01-28T14:39:03.900Z" 
}, 
"login_counter": 5, 
"created_at": "2015-01-28T14:39:03.896Z", 
"updated_at": "2015-03-03T12:11:43.432Z" 

} ]

+0

Да, я уже сказал в комментариях. –

+0

Да, я видел ваши комментарии поздно – ROR

+0

Я пробую это раньше и получаю ту же ошибку. – freshgrand