我无法弄清楚如何通过jQuery submit()方法向Rails update()方法提交特定数据。这些是我正在使用的代码片段:
<% form_for(vote, :remote => true) do |f| %>
<%= check_box_tag "selection", vote.id %>
<% end %>
...
<%= link_to 'Vote Yes', ballots_path, :onclick => "$('.edit_vote').submit()", :class => "buttons" %>
<%= link_to 'Vote No', ballots_path, :onclick => "$('.edit_vote').submit()", :class => "buttons" %>
基本上Vote表中有一个名为'approval'的布尔字段,我想通过上面的两个链接更新此字段(投票是 - &gt; approval = true;投票否 - &gt; approval = false)。
最初我有&lt;%= check_box_tag“选择”,vote.id%&gt; as&lt;%= f.check_box:approval%&gt;我可以使用是/否按钮提交表单,但这不是我想要的功能。我需要Yes / No按钮实际上是批准值,复选框只是在那里,所以用户可以选择要投票的实体。
这是我正在尝试做的事情的图片:http://i.stack.imgur.com/QZqnw.png
关于我如何做到这一点的任何想法?
答案 0 :(得分:3)
可能因为它是一个远程表单,它使用自定义的onsubmit操作。我在Google上找到了关于如何假冒点击提交按钮而不是提交表单本身的提示。像这样:
:onclick => "this.form.submit.click();"
这假设有一个名为&#34;提交&#34;的提交按钮。如果您没有提交按钮,则可以随时添加一个并将显示设置为无以隐藏它,如下所示:
<%= submit_tag 'Opslaan', :name => 'submit', :style => 'display: none;' %>
答案 1 :(得分:0)
jQuery .submit()方法只是触发表单上的“submit”事件。换句话说,它与单击该表单中的“提交”按钮的工作方式相同。我假设你有一个包含整个列表的表单edit-vote
。
乍一看,看起来你的第一个问题是你可能在这里嵌套form
标签。表单标签不允许嵌套,如果你这样做,如果它们起作用,你会得到一些奇怪的和意外的行为。
尝试删除每个复选框周围的form_for
。只要您编写update
方法来接受您发布的数据,它就可以正常工作。