使用rails中的link_to提交表单

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

 '/post/action', :method=> 'post', :html => {:id=>'form_id'} ) do |f| %> .... "document.getElementById('form_id').submit()" %> .... 

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

您可以使用:

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

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

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

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

我认为这两件事都会发生。 浏览器开始提交表单,但它也跟随链接的href 。 您可以通过链接到#而不是/post/action来修复它…

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

首先,您可以使用按钮而不是链接。 你必须设计它以使它看起来像一个链接,但这应该不是一个问题。 它会更好,因为它不会破坏最不可思议的原则(阅读代码的人希望使用按钮提交表单)并且您不需要JavaScript。

如果您坚持使用链接,则至少应将JavaScript代码从视图移动到JavaScript文件。 然后不引人注意地添加此行为(尽管,您将无法通过链接获得良好的后备)。 假设你正在使用jQuery,它应该像下面这样简单:

 $(document).on('click', '[data-submit-form]', function(e) { e.preventDefault(); $(this).closest('form').submit() }