在Rails中提交错误的表单数据

时间:2014-01-24 06:48:38

标签: javascript html ruby-on-rails forms ruby-on-rails-4

我正在开发一个琐事应用程序提出一个问题,并从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,但我不认为这是可能的。有什么建议吗?

1 个答案:

答案 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 %>