javascript - Rails 中提交的表单数据错误

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

我正在开发一个问答应用程序,该应用程序提出问题并从 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/

相关文章:

扩展搜索栏中的 Javascript 逻辑

html - 需要多个 &lt;meta&gt; 标签还是我只需要一个?

ruby-on-rails - 空字符串作为枚举类型列的默认值,而不是 Rails 中的 nil

javascript - js通过静态方法创建对象

javascript - 将动态内容添加到动态内容中。是否可以?

javascript - 在 rails 中动态生成 Bootstrap 选项卡

jQuery UI 调整大小,同时保持相同的整体宽度

运行rails db迁移后mysql丢失字段

ruby-on-rails - Gem::RemoteFetcher::FetchError - bundle 安装期间证书验证失败

javascript - 使用 CSS 或 JavaScript 从原色动态获取强调色