使用RoR link_to和jQuery submit()提交特定表单数据

时间:2011-05-01 04:10:41

标签: jquery ruby-on-rails forms

我无法弄清楚如何通过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

关于我如何做到这一点的任何想法?

2 个答案:

答案 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方法来接受您发布的数据,它就可以正常工作。