2015-05-05 2 views
0

Привет Я пытаюсь построить опрос с помощью приложения rails. Мое приложение для рельсов имеет две модели: Question has_many: ответы и ответ принадлежит_от: вопросRails Checkbox formating

Я пытаюсь повторить все вопросы и все связанные с ними ответы и установить флажок для всех ответов на этот связанный вопрос. Как я могу сделать флажки? Вот что я до сих пор. Нужно ли это обертывать в форму для каждого вопроса?

<% @questions.each do |question| %> 
    <tr> 
    <td><%= question.content %></td><br> 
    <% question.answers.each do |answer_choice| %> 
     <%= form.check_box :answer_choice %> 
    <% end %> 
    </tr> 
    <% end %> 

ответ

1

Если я правильно понял, вы хотите создать вложенную форму для каждого ответа в форме вопроса. Вы можете сделать это следующим образом:

В Question.rb установлен accepts_nested_attributes_for:

class Question< ActiveRecord::Base 
    has_many :answers 
    accepts_nested_attributes_for :answers 

Затем вы можете сделать вид что-то вроде этого:

<% @questions.each do |question| %> 
    <%= form_for @question do |f| 
     <%= f.fields_for :answers do |answer_builder| %> 
      <%= answer_builder.check_box :answer_choice %> 
     <%end%> 
    <%= f.submit %> 
    <%end%> 
<% end %> 

Теперь модели ответ будет автоматически обновляться при отправьте форму вопроса. Если у вас есть метод question_params в контроллере убедитесь, чтобы установить его, чтобы параметры для ответов, а также, например,:.

def question_params 
    params.require(:question).permit(:question_name, answers_attributes: [:answer_choice]) 
end 

Ryan Bates имеет отличную Railscast на вложенных форм. http://railscasts.com/episodes/196-nested-model-form-part-1