2016-10-25 5 views
0

私はレールアプリケーションにフォームを用意していますが、複数回クリックすると複数回送信されます。クリックではボタンを無効にしますが、その唯一のボタンはクリックであり、実際にデータを送信したり、検証をチェックしたりすることはありません。 助けてください、ありがとうございます。すべてのフィールドのみが有効な場合、妥当性チェックでレールフォームを1回提出する方法

+0

ようこそ。 [ツアー](http://stackoverflow.com/tour)をご覧ください。 [What topic about about](http://stackoverflow.com/help/on-topic)と[よくある質問をする方法](http://stackoverflow.com/help/)をチェックしてみてください。ハウツー尋ねる)、[完璧な質問](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)、そして[最小、完全、検証可能な例](http://stackoverflow.com/help/mcve)。試したコードと受け取ったエラーを投稿してください。できるだけ具体的にすることで、より良い回答につながります。 –

答えて

0

ClientSideValidation gemを使用して、フィールドが有効かどうか(モデル検証ルールを使用する)を確認できます。
フォームは、すべてのフィールドが有効になるまで送信されません。

+0

と一緒に、私はフォームを複数回送信するようにユーザーを制限するための送信ボタンを無効にしたい –

0

あなたはそれを行うことができます

<%unless object.new_record?%> 

<%=f.submit "save",:diabled=>'true'%> 

<%end%> 
0

場合やない限りconditonを使用してClientSideValidation宝石を使用して、送信ボタンを有効/無効にするために使用できるコールバックを持っています。 https://github.com/DavyJonesLocker/client_side_validations#callbacks

// You will need to require 'jquery-ui' for this to work 
window.ClientSideValidations.callbacks.form.fail = function(form, message, callback) { 
    form.find('#submit-button').prop('disabled', true) 
} 

window.ClientSideValidations.callbacks.form.pass = function(element, callback) { 
    form.find('#submit-button').prop('disabled', false) 

}

0

Railsは、あなたがリンクやボタンの上に使用することができますdisable_with方法が組み込まれています。だからこのような何かをすることができます:button_tag "Checkout", data: { disable_with: "Please wait..." }。一度ボタンをクリックすると、ボタンは無効になり(コントローラに送信されるデータはもうなくなります)、ボタンのテキストは「お待ちください...」に置き換えられます。

関連する問題