Rails 3:如何将check_box_tag中的布尔数据放入nested_form中?

时间:2013-08-16 14:02:34

标签: ruby-on-rails ruby-on-rails-3

其实我用radio_button尝试了这个,但我放弃了。(对我来说太复杂了。)

我有DB表'问题','回答'。(这两个表已经通过has_many和belongs_to以及nested_form关系相关联。)

在答案表中有user_answer(布尔值,由默认值'false'创建)列。

我想这样做。

  1. 如果用户选中check_box,则user_answer会更改为“true”值。
  2. 然后我将比较答案表中正确列中的另一个值,
  3. 最后我将结果保存在问题表中的is_correct列中。
  4. 但我不知道该怎么办。这是输入表格。

    <h1><%= @survey.name %></h1>
     <%= form_tag({:controller => "surveys", :action => "grading"}) do %>
      <ol class="questions">
       <% @survey.questions.each do |question| %>
       <li>
       <strong><%= question.content %></strong>
        <ol class="checkbox">
         <% question.answers.each do |answer| %>
           <%= check_box_tag(answer.user_answer) %>
           <%= label answer.content) %>
         <% end %>
         </ol>
         <hr />
       </li>
       <% end %>
      </ol>
    
      <div><%= submit_tag("Submit", :class => "submit") %></div>
    

    但是answer.user_answer总是'假',它根本没有改变。我该如何更改此行?

      <%= check_box_tag(answer.user_answer) %>
    

1 个答案:

答案 0 :(得分:0)

有:

 <% question.answers.each do |answer| %>
   <%= check_box_tag 'answers[]', answer %>
   <%= label answer.content %>
 <% end %>

会将params[:answers]发送给您的控制器。在控制器中进行所有比较等。