我正在使用Twitter gem,但是我希望了解如何在页面加载后在后台运行它。
目前,我需要等待页面呈现,因为gem正在查询某些推文。一旦gem得到响应,页面就会加载。
但是,我希望在我的Twitter feed“ div”标签中显示一个“正在加载” GIF,一旦检索到Twitter信息,请用相应的内容替换该GIF。
我读了几篇文章,介绍了如何使用表单和表单上的“ :remote => true
”标签来进行AJAX调用,这些调用不会重新加载各自的页面,但是我不想强迫访问者单击链接为了查看Twitter推文。
我正在使用:
有多种执行此操作的方法;一种相当普遍的做法以及解决方法是使用jQuery的$.ajax()
从服务器获取数据并更新页面。
客户端:
正常加载页面并显示某种加载指示符。
拨打$.ajax()
:
$.ajax({
type: "GET",
url: userId + '/tweets', // i.e. tweets is a nested resource of user
success: function(tweets){
$('#loading_indicator').hide();
// Use the tweets that are returned to update the DOM
$.each(tweets, function(ndx, tweet) {
$('#tweet_list').append('<li>'+tweet.body+<'/li'>);
});
}
});
服务器端:
在控制器中有一个动作,该动作将tweet作为JSON发送出去,以供客户端success回调使用。将此操作的路由设置为与$.ajax()
:中的url
class TweetsController < ApplicationController
def show
# collect tweets...
render :json => @tweets
end
end