使用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() }