2014-07-16 59 views
7

我看到一些類似的問題,但它們看起來很有意思,主要針對以前版本的Rails。提交Rails 4表單鏈接而不是按鈕

什麼是提交與錨標記(鏈接)的一種形式,而不是正常的按鈕

<%= f.submit 'Search', :class => "button expand"%> 

什麼是最簡潔的方式(最佳實踐)的方式改變一個鏈接的最簡單方式提交?

+0

只是好奇,爲什麼你想這樣做?無論如何,只需在提交表單的鏈接的點擊事件中添加一個處理程序即可。 –

+0

只需將您的按鈕設計得像鏈接或使用一些Javascript來提交表單即可。這不是Rails特有的。 – tirdadc

+0

我已經在幾個地方看到它作爲一個問題引用,所以我只是好奇,如果有一個Rails方式或助手,使它更容易做,但基於答案它只是JavaScript,使預期的結果。 –

回答

9

我經常使用js/jquery提交表單。如果提交按鈕不在表單之外,或者有多個按鈕提交相同的表單,這非常有用。

$(".submit-btn").click(function(event) { 
    event.preventDefault(); 
    $("#form-id").submit(); 
}); 

event.preventDefault();可以防止默認按鈕/提交行爲。

這是我在一個軌道4項目使用CoffeeScript的例子:

ready = -> 
    if $("#form-id").length > 0 
    $(".submit-btn").click (event) -> 
     event.preventDefault() 
     $("#form-id").submit() 

$(document).ready ready 
$(document).on "page:load", ready 

另外請注意,這樣的鏈接可以是任何類型的元素 - 不一定是一個提交按鈕。您不必在表單中放置提交按鈕,但如果您這樣做,則會阻止默認表單提交行爲。

+0

這似乎不適用於Rails 5,可能是由於表單真實性令牌的問題。 – jpwynn

0

這是如此簡單:

然後:

<%= f.submit '', :class => "hidden", :id => 'form_submit_button' %> 
content_tag(:a, 'Submit', :name => 'submit', :id => 'submit_link') 

和JS:

$(document).ready(function() { 
    $(document).on("click","#submit_link",function() { 
     $('#form_submit_button').click(); 
    }); 
}); 

我不知道確切的左右這樣的語法時纔可能有一些語法錯誤。請隨時索取更多幫助。

+0

您不需要添加提交按鈕並隱藏它。根本不包括它。 –

+0

但我認爲jQuery已棄用form.submit()行動。否則最好不要包含隱藏的按鈕 –

+0

已過時?你從哪裏得到這些信息? –

4

提交

爲了擴大已經提供的答案,HTML表單必須有submit按鈕提交。

我不知道到底是什麼特色的submit按鈕在鏈接上 - 它本質上調用submit行動,其中一個環節都不能(info):

enter image description here

-

鏈接

這意味着如果你想用一個替換提交按鈕鏈接,你基本上必須在應用程序中模仿submit方法。這可以用JS(JQuery)完成:

#app/assets/javascripts/application.js 
$(document).on("click", "#your_link", function(){ 
    $("#form").submit(); 
}); 

#app/views/controller/your_view.html.erb 
<%= form_tag your_path, id: "form" do %> 
    <%= link_to "Submit", your_path, id: "your_link" %> 
<% end %> 
相關問題