2013-05-22 128 views
0

我有一個與twitter集成的Ruby on Rails應用程序(Ruby-1.9,Rails-3.2),可動態顯示包含特定「關鍵字」的最新推文。但它會拋出一個錯誤 as TweetsController中的NameError#在瀏覽器上創建未初始化的常量Twitter ::搜索。 我已經運行數據庫遷移,重新啓動服務器,並嘗試在網上提供的各種選項。但似乎沒有任何工作。任何人都可以幫助解決這個錯誤?使用Ruby on Rails進行Twitter集成

模型和控制器的文件是以下

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 

TweetsController

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' 
+1

什麼是您用於twitter的gem?上面的錯誤是因爲你沒有在你的應用中包含寶石庫。你可以列出寶石或通過你的寶石文件。 –

+0

gemfile被粘貼在最新的編輯中。謝謝 – bhargav

回答

2

包括下面的代碼在你的application.rb中頂部應用程序/模型/ tweet.rb的文件

require 'twitter' 

例如: -

class Tweet < ActiveRecord::Base 
    require 'twitter' 
    .... 
    ... 
end 
+0

感謝您的幫助。試圖解決這個問題。但仍然給出了同樣的錯誤。任何其他出路? – bhargav