2015-05-05 64 views
0

嗨我试图用rails应用程序构建一个调查。我的Rails应用程序有两个模型:Question has_many:答案和答案belongs_to:问题Rails复选框格式化

我试图遍历所有问题及其所有相关答案,并对所有相关问题的答案做出复选框选项。我将如何去做复选框?这是迄今为止我所拥有的。这是否需要用每个问题的表单包装?

<% @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方法确保将其设置为允许答案参数以及,e.g,:

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

瑞恩·贝茨对嵌套形式的优秀Railscast。 http://railscasts.com/episodes/196-nested-model-form-part-1