0

我有一个表格可以遍历每个学生,并使用单选按钮根据目标对他们进行评估。每个目标的得分应为 1-5。目前,除了单选按钮外,一切正常 - 在整个表单中一次只能选择一个单选按钮 - 即,如果目标一标记为 3,然后目标二标记为 4,则目标一变得没有标记。

代码如下:

评估

evaluations - new.html.erb

...
<div class="holder2 round clear">
    <%= form_for([@student, @evaluation]) do |f|  %>
      <% @subjects.each do |group, subjects| %>
        <% subjects.each do |subject| %>
          <h3><%= subject.name %></h3>  
          <%= render "goal_eval", :subject => subject, :f => f %>
        <% end %>
      <% end %>
      <%= f.submit "Next student", :class => 'big_button round unselectable' %>
    <% end %>
</div>

goal_eval partial

<table class="fixed">
  <tbody>
      <% subject.goals.each do |goal| %>
      <tr class="<%= cycle("odd", "even", name: "goals")%>">
        <td class="goal_row"><%= goal.goal %></td> 
        <td>
          <% [1, 2, 3, 4, 5].each do |score| %>
            <%= radio_button_tag :score, score, goal_id: goal.id, student_id: @student.id %>
            <%= score %>
          <% end %>
        </td>
      </tr>  
    <% end %>
      <% reset_cycle("goals") %>
  </tbody>
</table>
4

2 回答 2

1

每个radio_button_tag都有相同的名称。

您可以将每个按钮命名为 score_xx,其中 xx 是目标的 ID。

<%= radio_button_tag "score_#{goal.id}", score, goal_id: goal.id, student_id: @student.id %>
于 2013-08-18T09:09:49.547 回答
0

因为它们都具有相同的名称/ID,所以您需要使用fields_for助手来限定嵌套表单的范围。

猜猜添加一个f.fields_for subject do |ff|arround your prtial call和一个arround ff.fields_for goalyour tr each loop应该可以解决问题。

于 2013-08-18T08:07:45.470 回答