Вложенная форма показывает только текстовые поля для одного атрибута, но должно быть три? - PullRequest
0 голосов
/ 05 марта 2012

У меня проблема с вложенной формой.

Модели:

class UserAnswer < ActiveRecord::Base
  belongs_to :user_questions
  belongs_to :question

  validates :user_question_group, presence: true
  validates :question, presence: true
  validates :answer, presence: true
end

и другая:

class UserQuestionGroup < ActiveRecord::Base
  belongs_to :user

  has_many :user_answers, dependent: :destroy

  accepts_nested_attributes_for :user_answers, :reject_if => lambda { |a| a[:answer].blank? }

  validates :user_id, presence: true
end

Итак, я создаю вопросв контроллере:

  def new
    @user_question_group = UserQuestionGroup.new(user_id: current_user.id)

    QuestionGroup.all.each do |ag|
      ag.questions.each do |a|
        @user_question_group.user_questions.build(questions_id: a.id)
      end
    end
  end

Что работает, что я вижу, когда просто проверяю: @ user_question_group.user_questions.Я вижу все вопросы.

Но когда я на самом деле хочу показать форму, она показывает только одну форму для вопроса, и она даже пуста, даже если question_id должен иметь число.

...
<%= form_for(@user_question_group, :url => user_user_question_groups_path(@current_user)) do |f| %>
  <%= f.hidden_field :user_id %>

  <%#= @user_question_group.user_questions.inspect %>
  <%= fields_for :user_questions do |fa| %> 
    <p>
      <%= fa.label :question_id %>
      <%= fa.text_field :question_id %>
    </p>
    <p>
      <%= fa.label :answer %>
      <%= fa.text_field :answer %>
    </p>
  <% end %>
...

Кто-нибудь знает, что не так с моей формой?

1 Ответ

3 голосов
/ 05 марта 2012

попробуйте использовать fields_for в качестве метода формы следующим образом:

...
<%= form_for(@user_question_group, :url => user_user_question_groups_path(@current_user)) do |f| %>
  <%= f.hidden_field :user_id %>

  <%#= @user_question_group.user_questions.inspect %>
  <%= f.fields_for :user_questions do |fa| %> 
    <p>
      <%= fa.label :question_id %>
      <%= fa.text_field :question_id %>
    </p>
    <p>
      <%= fa.label :answer %>
      <%= fa.text_field :answer %>
    </p>
  <% end %>
...
...