Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 实时推特流_Ruby On Rails_Ruby_Twitter - Fatal编程技术网

Ruby on rails 实时推特流

Ruby on rails 实时推特流,ruby-on-rails,ruby,twitter,Ruby On Rails,Ruby,Twitter,我正在用RubyonRailsV(2.0.0/4.0.0)编写一个应用程序,试图将一个来自特定源(@u101)的实时推特提要集成到一个基本的HTML页面上,但我不知道如何实现。在谷歌搜索了几个小时后,我看到了一些不同的宝石,它们似乎整合了Twitter(推特流、推特api、推特),然而,我无法让它们中的任何一个发挥作用。我遵循过这样的指南 这一点给了我一个错误: irb(main):002:0> Tweet.get_latest_new_year_resolution_tweets Nam

我正在用RubyonRailsV(2.0.0/4.0.0)编写一个应用程序,试图将一个来自特定源(@u101)的实时推特提要集成到一个基本的HTML页面上,但我不知道如何实现。在谷歌搜索了几个小时后,我看到了一些不同的宝石,它们似乎整合了Twitter(推特流、推特api、推特),然而,我无法让它们中的任何一个发挥作用。我遵循过这样的指南 这一点给了我一个错误:

irb(main):002:0> Tweet.get_latest_new_year_resolution_tweets
NameError: uninitialized constant Twitter::Search
        from C:/Sites/EasyBakeOven/blog/app/models/tweet.rb:6:in `get_latest_new
_year_resolution_tweets'
我不明白。如果有人能带我走过必要的步骤来实现我的目标,或者为我指明正确的方向,我会非常感激

更新: 型号:tweet.rb

  class Tweet < ActiveRecord::Base
    #A method to grab latest tweets from Twitter
  def self.get_latest_new_year_resolution_tweets

    #create a Twitter Search object
    search = Twitter::REST::Client.new

    #grab recent 100 tweets which contain 'new year resolution' words, and loop each of them
    search.containing("u101").result_type("recent").per_page(100).fetch.each do |tweet_results|

      #parsing the string 'created_at' to DateTime object
      twitter_created_at = DateTime.parse(tweet_results.created_at)

      #making sure we are not saving exact same tweet from a person again
      unless Tweet.exists?(['twitter_created_at = ? AND from_user_id_str = ?', DateTime.parse(tweet_results.created_at), tweet_results.from_user_id_str])

        #finally creating the tweet record
        Tweet.create!({
            :from_user => tweet_results.from_user,
            :from_user_id_str => tweet_results.from_user_id_str,
            :profile_image_url => tweet_results.profile_image_url,
            :text => tweet_results.text,
            :twitter_created_at => twitter_created_at
        })
      end
    end
  end
 end
class Tweettweet_结果。from_user,
:from_user\u id\u str=>tweet\u结果。from_user\u id\u str,
:profile\u image\u url=>tweet\u results.profile\u image\u url,
:text=>tweet_results.text,
:twitter\u created\u at=>twitter\u created\u at
})
结束
结束
结束
结束
tweets_controller.rb

 class TweetsController < ApplicationController
   def index
    #Get the tweets (records) from the model Ordered by 'twitter_created_at' descending
     @tweets = Tweet.order("twitter_created_at desc")  
   end
 end
class TweetsController
index.html.rrb:

 <h1>Tweets#index</h1>
 <div id="container">
 <ul>
  <% @tweets.each do |tweet| %>
     <li class="<%=cycle('odd', '')%>">
         <%= link_to tweet.from_user, "http://twitter.com/#{tweet.from_user}", :class => "username", :target => "_blank" %> 
         <div class="tweet_text_area">
             <div class="tweet_text">
                 <%= tweet.text %>
             </div>
             <div class="tweet_created_at">
                 <%= time_ago_in_words tweet.twitter_created_at %> ago
             </div>
         </div>
     </li>
 <% end %>
 </ul>
  </div>
Tweets#索引
  • “\u blank”%> 以前
此外,我还尝试使用“#u101”显示推文

使用(JS)(无gems)

这是通过获取一个小部件(它是实时的并且完全受Twitter支持)并解析出您可能不想要的任何样式/HTML来实现的。我们已经实施了多次:

#app/assets/javascripts/twitterfetch.js
[[twitter fetcher JS here]]

#app/assets/javascripts/application.js
//= require twitterfetch

$(function() {
    twitterFetcher.fetch('WIDGET_ID', 'twitter_feed', 3, true, true, true, '', false, handleTweets, false);
    function handleTweets(tweets){
        var x = tweets.length;
        var n = 0;
        var element = document.getElementById('twitter_feed');
        var html = '<ul>';
        while(n < x) {
            html += '<li>' + tweets[n] + '</li>';
            n++;
        }
        html += '</ul>';
        element.innerHTML = html;
    };
});
#app/assets/javascripts/twitterfetch.js
[[twitter fetcher JS here]]
#app/assets/javascripts/application.js
//=需要twitterfetch
$(函数(){
fetch('WIDGET_ID','twitter_feed',3,true,true,true',false,handleTweets,false);
功能手机短信(tweets){
var x=tweets.length;
var n=0;
var element=document.getElementById('twitter_提要');
var html='
    '; 而(n'; n++; } html+='
'; element.innerHTML=html; }; });
如果你想用这种方法,我可以帮你更多


实时流媒体

twitter的“实时”流媒体有几个问题:

  • 他们的
  • 您将如何存储数据
  • 我想我明白了你想要实现的,但实际上,他们的API策略使得实现任何“实时”功能变得非常困难。如果你想以自己的方式显示推文,我建议你使用一个小部件&使用上面提供的JS(无gems)

    这是通过获取一个小部件(它是实时的并且完全受Twitter支持)并解析出您可能不想要的任何样式/HTML来实现的。我们已经实施了多次:

    #app/assets/javascripts/twitterfetch.js
    [[twitter fetcher JS here]]
    
    #app/assets/javascripts/application.js
    //= require twitterfetch
    
    $(function() {
        twitterFetcher.fetch('WIDGET_ID', 'twitter_feed', 3, true, true, true, '', false, handleTweets, false);
        function handleTweets(tweets){
            var x = tweets.length;
            var n = 0;
            var element = document.getElementById('twitter_feed');
            var html = '<ul>';
            while(n < x) {
                html += '<li>' + tweets[n] + '</li>';
                n++;
            }
            html += '</ul>';
            element.innerHTML = html;
        };
    });
    
    #app/assets/javascripts/twitterfetch.js
    [[twitter fetcher JS here]]
    #app/assets/javascripts/application.js
    //=需要twitterfetch
    $(函数(){
    fetch('WIDGET_ID','twitter_feed',3,true,true,true',false,handleTweets,false);
    功能手机短信(tweets){
    var x=tweets.length;
    var n=0;
    var element=document.getElementById('twitter_提要');
    var html='
      '; 而(n'; n++; } html+='
    '; element.innerHTML=html; }; });
    如果你想用这种方法,我可以帮你更多


    实时流媒体

    twitter的“实时”流媒体有几个问题:

  • 他们的
  • 您将如何存储数据
  • 我想我明白了你想要实现的,但实际上,他们的API策略使得实现任何“实时”功能变得非常困难。如果你想以自己的方式显示推文,我建议你使用一个小部件&使用上面提供的JS(无gems)

    这是通过获取一个小部件(它是实时的并且完全受Twitter支持)并解析出您可能不想要的任何样式/HTML来实现的。我们已经实施了多次:

    #app/assets/javascripts/twitterfetch.js
    [[twitter fetcher JS here]]
    
    #app/assets/javascripts/application.js
    //= require twitterfetch
    
    $(function() {
        twitterFetcher.fetch('WIDGET_ID', 'twitter_feed', 3, true, true, true, '', false, handleTweets, false);
        function handleTweets(tweets){
            var x = tweets.length;
            var n = 0;
            var element = document.getElementById('twitter_feed');
            var html = '<ul>';
            while(n < x) {
                html += '<li>' + tweets[n] + '</li>';
                n++;
            }
            html += '</ul>';
            element.innerHTML = html;
        };
    });
    
    #app/assets/javascripts/twitterfetch.js
    [[twitter fetcher JS here]]
    #app/assets/javascripts/application.js
    //=需要twitterfetch
    $(函数(){
    fetch('WIDGET_ID','twitter_feed',3,true,true,true',false,handleTweets,false);
    功能手机短信(tweets){
    var x=tweets.length;
    var n=0;
    var element=document.getElementById('twitter_提要');
    var html='
      '; 而(n'; n++; } html+='
    '; element.innerHTML=html; }; });
    如果你想用这种方法,我可以帮你更多