我正在开发一个琐事应用程序提出一个问题,并从2x2网格中的四个按钮之一得到答案。我正在创建每个按钮作为单独的表单并添加隐藏字段的输入数据。我正在使用remote:true通过不显眼的javascript将此数据传递给rails。不幸的是,我在测验应用程序中遇到了一些非常奇怪的错误,因为当按下正确的答案按钮时,有时会传递错误的答案。经过我的控制器并查看了相当长的一段时间后,我确信发生了一些不稳定的事情并且浏览器提交了错误的表单。
我认为答案形式是这样创建的:
<div id="answers">
<% @choices.each_slice(2) do |first_two| %>
<div class="row">
<% first_two.each do |choice| %>
<div class="col-md-6">
<%= form_for(@exam, remote: true) do |f| %>
<%= hidden_field_tag 'answer', choice.id %>
<%= hidden_field_tag 'fIndex', @facts.index(@currentFact) %>
<% fact_index = @facts.index(@currentFact) %>
<%= f.submit "#{choice.answer}", class: "btn btn-default btn-answer #{answer_size(choice.answer)} ", id: "answer#{choice.id}" %>
<% end %>
</div>
<% end %>
</div>
<% end %>
你会注意到每个表单都有相同的id(不好)和类,我认为这是我痛苦的根源。我该如何改变?我不希望以这种方式做事,只是通过link_to
帮助器传递我的表单数据,方法:post,但我不认为这是可能的。有什么建议吗?
答案 0 :(得分:0)
如果你只想给表单一个id,你可以在form_for的选项中这样做。此外,你有fact_index设置,但似乎没有使用它...这应该工作:
<%= form_for(@exam, remote: true, id: 'q_' + @exam.id) do |f| %>
<%= hidden_field_tag 'answer', choice.id %>
<%= hidden_field_tag 'fIndex', @facts.index(@currentFact) %>
<%= f.submit choice.answer, class: "btn btn-default btn-answer #{answer_size(choice.answer)} ", id: "answer#{choice.id}" %>
<% end %>