我正在开发一个问答应用程序,该应用程序提出问题并从 2x2 网格中的四个按钮之一获取答案。我将每个按钮创建为单独的表单,并添加带有隐藏字段的输入数据。我正在使用remote:true通过不显眼的javascript将此数据传递到rails。不幸的是,我在测验应用程序中遇到了一些非常奇怪的错误,因为当按下正确答案的按钮时,有时会通过错误答案。在检查我的 Controller 和 View 相当长一段时间后,我确信发生了一些奇怪的事情,并且浏览器提交了错误的表单。
我认为答案表格的创建方式如下:
<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(不好)和类,我认为这是我痛苦的根源。我该如何改变这个?我不想这样做,只是通过带有 method:post 的 link_to
帮助器传递我的表单数据,但我认为这是不可能的。有什么建议吗?
最佳答案
如果您只想为表单提供一个 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 %>
关于javascript - Rails 中提交的表单数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21326218/