我有一个使用Ajax的基本Rails应用程序(我遵循了这个伟大的Railscast tutorial)
在创建新记录时,它会执行ajax调用,使用:remote =>是的,所以流程是:
用户点击提交> Ajax调用>创建新记录>使用新记录更新了用户界面
这一切都运行正常,但是用户点击提交和添加的记录之间存在(非常)小的等待。只有很多用户在点击它时才会注意到。我更喜欢做的是:
用户点击提交>使用新记录更新UI(使用throbber)> Ajax调用>创建新记录>成功取消了悸动
因此,对于用户来说,提交是即时的,无需等待,即使后端仍在创建记录。
我想知道在Rails中有这样做的最佳实践吗?或者只是编写一些自定义的JavaScript来处理它?</ p>
答案 0 :(得分:1)
当您使用:remote => true
rails使用jquery_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
答案 1 :(得分:0)
你正在做的是最好的事情,但不是立即在UI中创建记录,你应该显示throbber,直到你从服务器得到对象已成功创建的响应。您还应该处理任何验证错误,如果有错误并在客户端上显示它。