3

ラジオボタンに問題がありました。これは、私のルビーによって生成された HTML です。

    <form accept-charset="UTF-8" action="/uanswers" class="new_uanswer" id="new_uanswer"         method="post"><div style="margin:0;padding:0;display:inline">
    <input name="utf8" type="hidden" value="✓" /><input name="authenticity_token"    type="hidden" value="tiJsYNr71Zqo+R5TheG2nvB3ownJ4iKbmwMfA/11TXg=" /></div> 
        <table> 
    <input id="uanswer_answer_id" name="uanswer[answer_id]" type="hidden" /> <tr> 
    <td><input id="uanswer_answer_id_12" name="uanswer[answer_id]" type="radio" value="12" /></td> 
    <td><label for="uanswer_answer_id">!</label></td> <td> | Count: 0</td> </tr> <input id="uanswer_answer_id" name="uanswer[answer_id]" type="hidden" />
    <tr> 
    <td><input id="uanswer_answer_id_13" name="uanswer[answer_id]" type="radio" value="13" /></td>
    <td><label for="uanswer_answer_id">!!</label></td> <td> | Count: 0</td> </tr> <input id="uanswer_answer_id" name="uanswer[answer_id]" type="hidden" />
    <tr>
    <td><input id="uanswer_answer_id_14" name="uanswer[answer_id]" type="radio" value="14" /></td>
    <td><label for="uanswer_answer_id">!!!</label></td> <td> | Count: 0</td>
    </tr>
</table>

残念ながら、3 番目のラジオ ボタンを選択した場合にのみ機能します。たとえば、1 番目または 2 番目を選択すると、params ハッシュの「answer_id」フィールドは空白になります。しかし、3 番目を選択すると、正しい値は 14 になります。正しい。

編集: これは、この HTML の背後にある ERB です。

<%= form_for(uanswer) do |f| %>
  <table>
  <% answers.each do |answer| %>
  <%= f.hidden_field :answer_id %>
    <tr>
      <% unless current_user.has_answered? question %>
        <td><%= f.radio_button :answer_id, answer.id %></td>
      <% end %>
      <td><%= f.label :answer_id, answer.answer %></td>
      <td> | Count: <%= answer.count %></td>
    </tr>
  <% end %>
  </table>
  <% unless current_user.has_answered? question %>
    <%= f.submit "Answer!" %>
  <% end %>
<% end %>
4

1 に答える 1

1

answer_id の非表示フィールドが必要になる場合があります (ラジオ ボタンがチェックされていない場合、サーバーは answer_id をクリアします) が、間違った場所に配置されていました。ループの外にある必要があります。

<%= form_for(uanswer) do |f| %>
  <table>
  <%= f.hidden_field :answer_id %>
  <% answers.each do |answer| %>
    <tr>
      <% unless current_user.has_answered? question %>
        <td><%= f.radio_button :answer_id, answer.id %></td>
      <% end %>
      <td><%= f.label :answer_id, answer.answer %></td>
      <td> | Count: <%= answer.count %></td>
    </tr>
  <% end %>
  </table>
  <% unless current_user.has_answered? question %>
    <%= f.submit "Answer!" %>
  <% end %>
<% end %>
于 2012-10-25T05:13:21.420 に答える