J'ai un formulaire imbriqué qui comprend une leçon/questions/réponses. L'utilisateur remplit les champs de réponse et clique sur Envoyer. Le hachage est illustré ci-dessous:Mise à jour des paramètres de hachage imbriqués. Mettre à jour l'action, ruby sur rails
Parameters: {"commit"=>"Submit Answers", "action"=>"update", "_method"=>"put", "authenticity_token"=>"y##########o=", "lesson"=>{"questions_attributes"=>{"0"=>{"id"=>"1", "answer"=>{"response"=>"answertextanswertext", "user_id"=>"2"}}, "1"=>{"id"=>"4", "answer"=>{"response"=>"answertextanswertext", "user_id"=>"2"}}}}, "id"=>"1", "controller"=>"lessons"}
Dans ma déclaration de mise à jour, je voudrais faire une boucle à travers les réponses et remplacer user_id pour des raisons de sécurité. J'ai modifié ma déclaration de mise à jour à ce qui suit:
def update
@lesson = Lesson.find(params[:id])
lesson_params = params[:lesson]
for q in lesson_params[:questions_attributes].values
for s in q.values
if !s[:user_id].nil?
s[:user_id] = current_user.id.to_s
end
end
end
if @lesson.update_attributes(lesson_params)
flash[:notice] = "Answers submitted successfully."
redirect_to lessons_path
else
render :action => 'edit'
end
end
Je suis un noob, si le hachage parcourait imbriquée était un peu d'essais et d'erreurs. Est-ce la façon appropriée de parcourir le hachage imbriqué? Est-ce un bon moyen de se protéger contre l'assignation de masse?
Merci, Alex