为一系列问题制作一组单选按钮

时间:2014-05-25 11:27:01

标签: ruby-on-rails

我有一个有多个问题的feedback_answers变量。 对于每个问题,我需要创建一组单选按钮和一个复选框。 所以我在主要的rhtml中写了这个:

<% form_for @feedback_answers do|answers_form| %>
    <% @feedback_answers.each do |q| %>
            <tr class="answerRow">
                <td><%= q.question.body %></td>
                <td><%= render :partial => "radios_with_cb", :locals => {:feedback_answer => q} %></td>
            </tr>
    <% end %>
<% end %>

然后在部分我有这个:

<% fields_for :feedback_answer do |f| %>
        <%= f.radio_button :answer_grade, 1 %> 1 
        <%= f.radio_button :answer_grade, 2 %> 2 
        <%= f.radio_button :answer_grade, 3 %> 3 
        <%= f.radio_button :answer_grade, 4 %> 4 
        <%= f.radio_button :answer_grade, 5 %> 5 
        <%= f.check_box :answer_grade %> <%= l(:cb_unrelated) %>
<% end %>

但我得到错误。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我看到几个问题:

  1. form_for应该包裹单个对象,而不是像form_for @feedback_answers那样包装多个对象。
  2. 如果您希望表单显示在页面中,则必须使用输出ERB块,因此<%= form_for ...代替<% form_for ...
  3. form_for中,您应该使用表单生成器对象(在您的情况下称为answer_form)进行对象交互。因此,我希望更像<% @feedback_answers.each do |q| %>
  4. 而不是<% answer_form.feedback_answers.each do |q| %>
  5. 渲染部分渲染表单的部分时,需要将表单生成器与其一起传递,以便部分中的字段可以在同一表单上呈现字段。你应该这样做,例如<%= render :partial => "radios_with_cb", :locals => {:answers_form => answers_form, :feedback_answer => q} %>
  6. 部分内部:应在表单生成器对象上调用fields_for语句,因此您需要:<%= answers_form.fields_for :feedback_answer do |f| %>
  7. 如果您希望fields_for显示在页面中,则需要使用ERB输出块,因此<%= answers_form.fields_for ...
  8. 另请参阅Rails Guide on Binding a From to an Object