Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ajax、Rails和UI的最佳实践_Ruby On Rails_Ajax_Jquery - Fatal编程技术网

Ruby on rails Ajax、Rails和UI的最佳实践

Ruby on rails Ajax、Rails和UI的最佳实践,ruby-on-rails,ajax,jquery,Ruby On Rails,Ajax,Jquery,我有一个使用Ajax的基本Rails应用程序(我遵循了这个很棒的方法) 在创建新记录时,它使用:remote=>true执行ajax调用,因此流程为: 用户单击提交>Ajax调用>创建新记录>使用新记录更新UI 这一切都很好,但是在用户点击提交和添加记录之间有一个(非常)小的等待。只有当很多用户点击它时,才会注意到。我想做的是: 用户单击提交>使用新记录更新UI(使用throbber)>Ajax调用>创建新记录>成功删除throbber 因此,对于用户来说,提交是即时的,无需等待,即使记录仍在后

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

在创建新记录时,它使用:remote=>true执行ajax调用,因此流程为:

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

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

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

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


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

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

当您使用
时:remote=>true
rails使用
jquery\u ujs
提交ajax请求。UJS库提供回调,以便在不同点上钩住自定义代码

你需要的是这样的东西:

$('form.new_record').on('ajax:beforeSend', function(event, xhr, settings) {
    // Show throbber
    return true;
});
有关更多详细信息,请参阅此链接: