2015-08-29 21 views
7

Ho un problema quando tento di salvare un modello che ha più livelli di accept_nested_attribetus_for.Rails 4 Strong Parameters quando multiple_nested_attributes_for multiplo_per

Il mio caso d'uso è che esiste una pagina utente, in cui l'utente può creare più domande e anche più risposte per domanda.

Che cosa sta accadendo è che dal momento che non ci può essere più domande sulla pagina di inviare, l'hash parametri per l'utente, a presentare, si presenta come:

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

E, come tale, l'errore che sto ottenendo è " Parametro non digitato: 0 ". Come configurare correttamente i permessi dei parametri forti, in modo che possa salvare tutti i modelli correttamente? Posso scorrere le domande e salvarle individualmente, e questo funziona, ma speravo che ci sarebbe stato un modo più pulito per farlo.

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 

risposta

1

Prova questo

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

Non funziona. Dicendo sempre l'attributo **: ans ** come ** Unpermitted ** – Sachin

+1

Qualcuno ha trovato un modo per farlo funzionare? Ho lo stesso problema su Rails 5 – lkartono