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" %>

我的目标是从 JavaScript 调用此控制器操作,onclick而不是使用 HTML 按钮。

问题是,目前,我可以在页面呈现时双击按钮并执行两次代码。我的理解是 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 提出了解决问题的好方法。

此外,如果您愿意,您可以在整个页面上使用掩码,向您的用户显示一些正在处理或等待的消息,以便您的用户不会做任何更改或单击页面的其他部分,直到您的过程完成。

这是实现这一目标的好文章或库。

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

于 2012-09-20T06:44:30.200 回答