Próbuję zrobić prostą aplikację do tworzenia quizów. Wzoruje się na tym: https://github.com/ryanb/complex-form-examples/tree/nested_form
Mam trzy modele: Quiz, QuizQuestion oraz QuizChoice.
Modele:
[code]#Quiz.rb
class Quiz < ActiveRecord::Base
attr_accessible :name, :desc, :facebook, :nagrody, :questions_count, :views
attr_accessible :quiz_questions_attributes
validates :name, :desc, :presence => true
has_many :quiz_questions, :dependent => :delete_all
accepts_nested_attributes_for :quiz_questions, :allow_destroy => true
end
#QuizQuestion.rb
class QuizQuestion < ActiveRecord::Base
attr_accessible :question, :quiz_id
attr_accessible :quiz_choices_attributes
validates :question, :presence => true
belongs_to :quiz
has_many :quiz_choices, :dependent => :delete_all
accepts_nested_attributes_for :quiz_choices, :allow_destroy => true
end
#QuizChoice.rb
class QuizChoice < ActiveRecord::Base
attr_accessible :choice, :quiz_question_id
#validates :choice, :presence => true
belongs_to :quiz_question
end[/code]
Formularz dodawania:
[code]<%= nested_form_for @quiz do |f| %>
<%= f.error_messages %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :desc %>
<%= f.text_field :desc %>
<%= f.fields_for :quiz_questions %>
<%= f.link_to_add "Dodaj pytanie", :quiz_questions %>
<%= f.submit %>
<% end %>[/code] Oraz partiale na pola: [code]#_quiz_choice_fields.html <%= f.label :choice, "Odp" %> <%= f.text_field :choice %> <%= f.link_to_remove "Usuń" %>#_quiz_question_fields.html
<%= f.label :question, "Pytanie" %><%= f.text_field :question %>
<%= f.link_to_remove "Usuń pytanie" %> <%= f.fields_for :quiz_choices %> <%= f.link_to_add "Dodaj odpowiedź", :quiz_choices %> [/code] Formularz dobrze się wyświetla i linki do dodawania odpowiedzi/pytań także działają prawidłowo. Problem pojawia się w momencie zatwierdzenia formularza. Przykładowo jeżeli dodam 2 pytania z 3 odpowiedziami powstaje Quiz z jednym pustym pytaniem, do którego przypisane są wszystkie dodane odpowiedzi. Kompletnie nie wiem czym jest to spowodwane.