13

我正在尝试使用 link_to 提交表单,如下所示:

 <%= form_for(@post,  :url=> '/post/action', :method=> 'post', :html => {:id=>'form_id'} ) do |f| %>
  ....

 <%= link_to 'submit', "/post/action", :onclick=>"document.getElementById('form_id').submit()" %>

  ....

但它没有发布表单,它只是将我的表单重定向到指定的 url。有谁知道如何做到这一点?

4

2 回答 2

25

您可以使用:

<%= link_to 'submit', "#", :onclick => "$('#form_id').submit()" %>

如果您使用的是 JQuery 和更高版本的 rails。

上面会起作用,但如果你有一个很长的页面,它会因为“#”导航到页面顶部,所以如果你想避免这种情况,你可以这样做:

<%= link_to 'submit', "", :onclick => "$('#form_id').submit()" %>
于 2013-02-20T19:29:05.717 回答
8

我认为这两种情况都会发生。浏览器开始提交表单,但它也遵循链接的href. #您可以通过链接到而不是/post/action...来修复它

...但是,我不建议这样做。有一些更好的方法:

首先,您可以使用按钮而不是链接。您必须对其进行样式设置以使其看起来像一个链接,但这应该不是问题。它会更好,因为它不会违反最小惊喜原则(阅读代码的人希望表单提交带有按钮)并且您不需要 JavaScript。

如果您坚持使用链接,您至少应该将 JavaScript 代码从视图移动到 JavaScript 文件。然后以不显眼的方式添加此行为(尽管您不会对链接有很好的回退)。假设您使用的是 jQuery,它应该很简单:

$(document).on('click', '[data-submit-form]', function(e) {
  e.preventDefault();
  $(this).closest('form').submit()
}
于 2012-07-25T08:20:36.243 回答