Итак, я выяснил, как заставить это работать, и я сделал это, используя эпизод railscasts: http://railscasts.com/episodes/196-nested-model-form-part-1.
Я знал об этом исправлении с самого начала, но я воздерживался от его использования, потому что функциямоего приложения - разрешить администраторам создавать рабочие места и вопросы (за стеной), а затем предлагать пользователям ответить на эти соответствующие вопросы.Я подумал, что если бы я вложил форму ответов в форму задания и вопросы, я бы не смог создать эту функциональность администратора / пользователя (это мой следующий подвиг).
Я просто вложил форму ответов в форму вопросов о работе / новом действии.Это выглядит так:
<%= form_for(@job) do |f| %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= f.fields_for :questions do |builder| %>
<%= render 'question_fields', :f => builder %>
<% end %>
<%= f.submit %>
<% end %>
При частичном вопросе:
<%= f.label :question, "Question" %>
<%= f.text_area :question, :rows => 10 %>
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove Question" %>
<%= f.fields_for :answers do |builder| %>
<%= render 'partials/answer_fields', :f => builder %>
<% end %>
А при частичном ответе:
<%= f.label "Answer" %>
<%= f.text_area :answer, :rows => 10 %>
<%= f.hidden_field :question_id, :value => @question %>
<%= f.hidden_field :job_id, :value => @job.id %>
Мне пришлось внести измененияв методе Jobs # new:
def new
@job = Job.new
10.times do
question = @job.questions.build
1.times { question.answers.build }
end
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @job }
end
end
Наконец, мои ассоциации в моделях должны были включать
accepts_nested_attributes_for
Примерно так:
Модели
class Job < ActiveRecord::Base
has_many :questions
has_many :answers
accepts_nested_attributes_for :questions, :allow_destroy => true
accepts_nested_attributes_for :answers, :allow_destroy => true
end
class Question < ActiveRecord::Base
belongs_to :job
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
belongs_to :job
belongs_to :question
end
Это решение сохраняет мои ответы, но теперь мне нужно использовать это частичное в другом представлении для выполнения функций, которые я пытался выполнить с помощью действий администратора / пользователя.
Дайте знать, если у вас появятся вопросы.