2013-11-12 1 views
1

я создаю опрос с помощью следующей модели данных: MathTest has_many math_questionsВ форме Rails, с помощью одной кнопки отправить отправить данные для нескольких моделей

На MathTest#update я хочу, чтобы создать одну форму для каждого вопроса. Форма должна выглядеть примерно так:

<%= form_for(mathtest) do %> 
    <% math_question.each do |question| %> 
    <%= f.label :answer %> 
    <%= f.text_field :answer %> 
    <%= f.hidden_field math_question.id %> 
    <% end %> 

    <% f.submit %> 
<% end %> 

Я хочу, чтобы направить MathTest Controller набор кортежей с math_question ид и ответ на этот вопрос. Затем в контроллере я могу вызвать другой метод, который оценивает ответ каждого вопроса.

Как написать свою форму для отправки соответствующего кортежа?

+2

С 'fields_for'. – meagar

ответ

1

Это следует сделать это:

<%= form_for(mathtest) do |f| %> 
    <% math_question.each do |question| %> 
    <%= f.fields_for :answer do |ff| %> 
     <%= ff.label :answer %> 
     <%= ff.text_field :answer %> 
    <% end %> 
    <% end %> 

    <% f.submit %> 
<% end %> 

редактировать Также модель:

class MathTest < ActiveRecord::Base 
    has_many :math_questions 
    accepts_nested_attributes_for :math_questions 

fields_for документация: http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for

+1

Вам также нужно поместить 'accepts_nested_attributes_for: math_questions' в вашу математическую тестовую модель – Philip7899

+0

Я также хотел бы добавить камень кокона. – Philip7899

+0

Я только что обновил свой ответ, спасибо за напоминание @ Philip7899 – MrYoshiji

Смежные вопросы