我对铁轨很陌生,我已经有一段时间了,但我不知道我错过了什么。我认为这只是我设置表单的方式,因为如果我只是尝试保存调查的名称,它就可以了。 survey / show.html.erb(我使用@survey来获取调查数据,例如问题和答案)。
<%= form_for(:submitted_survey, url: submitted_surveys_path) do |f| %>
<%= f.hidden_field :name, value: @survey.name %>
<%= f.fields_for :submitted_questions do |ff| %>
<% @questions.each do |question| %>
<ul>
<%= ff.hidden_field :content, value: question.content %>
<%= ff.label question.content %>
<%= ff.fields_for :submitted_answers do |fff| %>
<% question.answers.each do |answer| %>
<%= fff.hidden_field :content, value: answer.content %>
<%= fff.label answer.content %>
<%= ff.radio_button(:user_answer, answer.content) %>
<% end #questions.answers.each do %>
<% end #fields_for answers %>
<%= ff.hidden_field :question_explanation, value: question.question_explanation %>
</ul>
<% end #@questions.each do %>
<% end #fields_for questions %>
<%= f.submit %>
<% end #form_for%>
在我的调查控制器中:
def show
@survey = Survey.find(params[:id])
@questions = @survey.questions
@submitted_survey = current_user.submitted_surveys.build if logged_in?
end
user.rb:
has_many :submitted_surveys, :dependent => :destroy
has_many :submitted_questions, through: :submitted_surveys
has_many :submitted_answers, through: :submitted_questions
accepts_nested_attributes_for :submitted_surveys, :reject_if => -> (a) {a[:content].blank? }, :allow_destroy => true
我的模特和协会:
class SubmittedSurvey < ActiveRecord::Base
belongs_to :user
has_many :submitted_questions, :dependent => :destroy
accepts_nested_attributes_for :submitted_questions, :reject_if => -> (a) {a[:content].blank? }, :allow_destroy => true
end
class SubmittedQuestion < ActiveRecord::Base
belongs_to :submitted_survey
has_many :submitted_answers, :dependent => :destroy
accepts_nested_attributes_for :submitted_answers, :reject_if => -> (a) {a[:content].blank? }, :allow_destroy => true
end
class SubmittedAnswer < ActiveRecord::Base
belongs_to :submitted_question
end