我使用的是Twitter宝石(http://twitter.rubyforge.org/),效果很好。但是,我希望在页面加载后了解如何“在后台运行它”。
目前,用户需要等待页面呈现,因为Twitter gem正在查询一些推文。一旦twitter gem得到响应,页面就会加载。
但是,我希望在我的twitter feed“div”标签中显示“加载”gif,并且一旦检索到推特信息,将此gif替换为相应的内容。
我已经阅读了几篇关于如何使用表单和表单上的“:remote => true”标签的帖子,以便进行不会“重新加载”相应页面的AJAX调用,但我不知道我想强迫访问者点击链接,以便查看Twitter推文。
我在铁轨上非常环保,所以任何反馈都会非常感激。谢谢!
Ruby版本:1.8.7 Rails版本:3.0.9
答案 0 :(得分:4)
有多种方法可以做到这一点;一个相当普遍的做法和我想要的方法是使用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'>);
});
}
});
在控制器中执行操作,将推文发送为JSON,以供客户端成功回调使用。设置此操作的路由以与$ .ajax()中的 url 兼容
class TweetsController < ApplicationController
def show
# collect tweets...
render :json => @tweets
end
end