2012-07-25 90 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() 
}