0

私は次のルートを持っています:

resources :foods do
collection do
   post :f01a
 end
end 

およびコントローラー:

def f01a
@user = User.find(params[:id])
@eat = Eat.find_by_user_id(@user)
@eat.toggle!(:f01)
redirect_to @user
end

と表示:

<%= button_to "add f01a", send(:"f01a_foods_path", id: @user.id),  class: "btn btn-large btn-primary" %>

onclick私の目標は、HTMLボタンを使用する代わりに、JavaScriptからこのコントローラーアクションを呼び出すことです。

問題は、現在、ボタンをダブルクリックして、ページのレンダリング中にコードを2回実行できることです。JavaScriptまたはAJAXがこれを修正することは私の理解です。

4

2 に答える 2

1

まず、ボタンに固有のクラス名を付けます。

<%= button_to "add f01a", send(:"f01a_foods_path", id: @user.id), class: "f01a btn btn-large btn-primary" %>

次に、次のjavascriptをapplication.jsファイルに入れ、DOMの準備ができたら呼び出します。

$('form .f01a').submit(function() {  
    $(":submit", this).attr("disabled", "disabled");   
    $(":submit", this).addClass("disabled");
});
于 2012-09-20T02:51:55.567 に答える
0

Angelo Chrysoulakisは、問題を解決するための良い方法を提案しました。

また、必要に応じて、ページ全体でマスキングを使用して、処理中または待機中のメッセージをユーザーに表示し、プロセスが完了するまでユーザーが変更を加えたり、ページの他の部分をクリックしたりしないようにすることができます。

これを達成するための良い記事またはlibがあります。

http://code.google.com/p/jquery-loadmask/

于 2012-09-20T06:44:30.200 に答える