0

我有一个使用 Ajax 的基本 Rails 应用程序(我遵循了这个很棒的Railscast 教程

在创建新记录时,它使用 :remote => true 进行 ajax 调用,所以流程是:

用户单击提交 > Ajax 调用 > 创建新记录 > 使用新记录更新 UI

这一切都很好,但是在用户点击提交和添加记录之间有一个(非常)小的等待。只有在很多用户点击它时才会注意到。我更愿意做的是:

用户单击提交 > 使用新记录更新 UI(使用 throbber)> Ajax 调用 > 创建新记录 > 成功删除 Throbber

所以对于用户来说,提交是即时的,无需等待,即使记录仍在后端创建。

我想知道在 Rails 中是否有这样做的最佳实践?还是只是编写一些自定义 javascript 来处理它?

4

2 回答 2

1

当你使用:remote => truerailsjquery_ujs来提交 ajax 请求时。UJS 库提供回调以在各个点挂接自定义代码。

你需要的是这样的:

$('form.new_record').on('ajax:beforeSend', function(event, xhr, settings) {
    // Show throbber
    return true;
});

有关详细信息,请参阅此链接:https ://github.com/rails/jquery-ujs/wiki/ajax

于 2013-09-12T07:03:15.043 回答
0

您正在做的事情是最好的,但您应该显示 throbber 直到您从服务器获得对象已成功创建的响应,而不是立即在 UI 中创建记录。您还应该处理任何验证错误,以防万一,并将其​​显示在客户端上。

于 2013-09-12T06:31:01.820 回答