2012-07-25 45 views
11

我试图提交使用表格的link_to如下:提交使用形式的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()" %> 

    .... 

但不张贴的形式,它是简单地将我的表格指定的网址。有谁知道如何做到这一点?

回答

23

您可以使用:

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

如果你正在使用jQuery和轨道更高版本。

上面会工作,但如果你有一个很长的网页时,浏览网页,因为“#”的,所以如果你想避免,你可以做顶部:

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

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

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

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

如果您坚持使用链接,您至少应该将JavaScript代码从视图移至JavaScript文件。然后,这种行为不加引人注目地加入(尽管如此,链接不会有很好的回退)。假设你正在使用jQuery,它应该是简单的:

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