2015-05-05 62 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