Ruby on Rails:页面加载后运行Twitter Gem

时间:2011-09-05 03:11:23

标签: ruby-on-rails ajax twitter

我使用的是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

1 个答案:

答案 0 :(得分:4)

有多种方法可以做到这一点;一个相当普遍的做法和我想要的方法是使用jQuery的 $。ajax()从服务器获取数据并更新页面。

客户端:

  1. 正常加载页面并显示某种加载指示。

  2. 拨打$ .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'>);
        });
      }
    });
    
  3. 服务器端:

    在控制器中执行操作,将推文发送为JSON,以供客户端成功回调使用。设置此操作的路由以与$ .ajax()中的 url 兼容

    class TweetsController < ApplicationController
    
      def show
        # collect tweets...
        render :json => @tweets
      end
    
    end