2015-08-29 23 views
7

Występuje problem podczas próby zapisania modelu, który ma wiele poziomów accepts_nested_attribetus_for.Szyny 4 silne parametry, gdy wielopoziomowy accepts_nested_attributes_for

Moim przypadkiem użycia jest strona użytkownika, w której użytkownik może utworzyć wiele pytań, a także wiele odpowiedzi na pytanie.

Co się dzieje jest to, że ponieważ nie może być wiele pytań na temat strony podnoszą hash parametrów dla Użytkownika, na przedstawienia, wygląda następująco:

{"user"=>{"questions_attributes"=>{"0"=>{"desc"=>"question", "answers_attributes"=>{"0"=>{"ans"=>""}}}}}} 

I jako takie, błąd jestem coraz to " Nieprawidłowy parametr: 0 ". W jaki sposób poprawnie skonfigurować uprawnienia silnych parametrów, aby można było poprawnie zapisać wszystkie modele? Potrafię przeglądać pytania i zapisywać je indywidualnie, a to działa, ale miałem nadzieję, że będzie to czystszy sposób.

user.rb

has_many :questions 
accepts_nested_attributes_for :questions 

question.rb

belongs_to :user 
has_many :answers 
accepts_nested_attributes_for :answers 

answer.rb

belongs_to :question 

users_controller.rb

def update 
    user = User.find_by_id params[:id] 
    user.questions.create question_params(params[:user]) 
end 

def question_params(params) 
    params.require(:question_attributes).permit(:desc, {:answers_attributes => [:ans]} 
end 

Odpowiedz

1

Wypróbuj to:

def update 
    user = User.find_by_id params[:id] 
    user.update(user_params) 
end 

def user_params 
    params.require(:user).permit(:desc, :questions_attributes => [:question, answers_attributes => [:ans]]) 
end 
+0

To nie działa. Zawsze mówiący atrybut **: ans ** jako ** Niepotwierdzony ** – Sachin

+1

Czy ktoś znalazł sposób, aby to zadziałało? Mam taki sam problem w Rails 5 – lkartono