Ruby on Rails: запуск Twitter Gem после загрузки страниц - PullRequest
3 голосов
/ 05 сентября 2011

Я использую драгоценный камень Twitter (http://twitter.rubyforge.org/),, и он прекрасно работает. Однако я надеялся понять, как "запустить его в фоновом режиме" после загрузки страницы.

В настоящее время пользователь будетнужно подождать, пока страница отобразится, так как гем Twitter работает для запроса некоторых твитов. Как только твиттер Твиттера получает ответ, страница загружается.

Однако я надеялся отобразить «загрузочный» gifв моем тэге "div" в твиттере и после получения информации о твиттере замените этот gif соответствующим содержимым.

Я прочитал несколько постов о том, как использовать форму, и ": remote =>тег true в форме, чтобы выполнять вызовы AJAX, которые не будут «перезагружать» соответствующую страницу, но я не хочу заставлять посетителей нажимать на ссылку, чтобы увидеть твиты Twitter.

Я очень зеленый для ruby ​​на рельсах, поэтому любая обратная связь будет принята с благодарностью. Спасибо !!

Версия Ruby: 1.8.7 Версия Rails: 3.0.9

1 Ответ

4 голосов
/ 05 сентября 2011

Есть несколько способов сделать это;Довольно распространенная практика и способ, которым я хотел бы воспользоваться этим, - это использование 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'>);
        });
      }
    });
    

На стороне сервера:

Выполнить действие в контроллере, который отправляет твиты в виде JSON для использования на стороне клиента success callback.Настройте маршрутизацию для этого действия, чтобы оно было совместимо с url в $ .ajax ()

class TweetsController < ApplicationController

  def show
    # collect tweets...
    render :json => @tweets
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...