0

我有一个 Ruby on Rails 应用程序(Ruby-1.9、Rails-3.2),它与 twitter 集成以动态显示包含特定“关键字”的最新推文。但它会在 TweetsController#create uninitialized constant Twitter::Search on the browser中 抛出 NameError错误。我已经运行了数据库迁移,重新启动了服务器并尝试了网络上可用的各种选项。但似乎没有任何效果。任何人都可以帮助解决此错误吗?

模型和控制器文件如下

Tweet.rb(模型文件)

class Tweet < ActiveRecord::Base



def self.get_latest_new_year_resolution_tweets(keyword)


search = Twitter::Search.new


search.containing(keyword).result_type("recent").per_page(100).fetch.each do |tweet_results|

  twitter_created_at = DateTime.parse(tweet_results.created_at)

  unless Tweet.exists?(['twitter_created_at = ? AND from_user_id_str = ?', DateTime.parse(tweet_results.created_at), tweet_results.from_user_id_str])


    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 TweetsController < ApplicationController

def index
end 

def create

  String strText = params[:tweet][:search].to_s

  Tweet.get_latest_new_year_resolution_tweets(strText)


 if Tweet.count > 0                         

   Tweet.delete_all        

end    

    Tweet.get_latest_new_year_resolution_tweets(strText)

    @tweets = Tweet.order("twitter_created_at desc")  
    render 'index'  

  end

end

Index.html.erb(视图文件)

<h1>Twitter connect</h1>



<form action="create" method="post">

  <label for="keyword">Enter Keyword</label>

    <input id="keyword" name="tweet[search]" size="30" type="text" />


  <input type="submit" value="search" />

  </br> <br>  

 </form>

</br></br>  



<div id="container">

   <% if (@tweets != nil && @tweets.count>0) then %>

<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">

            <%=raw display_content_with_links(tweet.text) %>

        </div>

        <div class="tweet_created_at">

            <%= time_ago_in_words tweet.twitter_created_at %> ago

        </div>

     </div>

   </li>

    <% end %>

   </ul>

 <% end %>

</div> 

gemfile如下

source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'sqlite3', '1.3.6',:group => :development 


#gem 'ruby-mysql'
#gem 'mysql2'
group :production do
gem 'pg'
 end

 gem 'twitter', '4.6.2'
4

1 回答 1

2

在您的application.rb app/models/tweet.rb文件的顶部包含以下代码

require 'twitter'

前任:-

class Tweet < ActiveRecord::Base
  require 'twitter'
  ....
  ...
end
于 2013-05-22T10:47:08.570 回答