2013-05-22 3 views
0

У меня есть приложение Ruby on Rails (Ruby-1.9, Rails-3.2), которое интегрируется с твиттером для динамического отображения последних твитов, содержащих конкретное «ключевое слово». Но он бросает Ошибка как NameError в TweetsController # создать неинициализированную постоянную Twitter :: Поиск в браузере. Я выполнил миграцию db, перезапустил сервер и попробовал различные варианты, доступные в сети. Но ничего не работает. Может ли кто-нибудь помочь решить эту ошибку?Интеграция с использованием Ruby on Rails

модель и контроллер файлы находятся ниже

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

Что такое драгоценный камень, который вы использовали для твиттера? Вышеупомянутая ошибка связана с тем, что вы не включили библиотеку gem в свое приложение. можете ли вы перечислить драгоценный камень или прошлый файл вашего драгоценного камня. –

+0

Gemfile вставляется в последнее редактирование. Спасибо – bhargav

ответ

2

Включите ниже кода в application.rbили верхней части приложение/модели/tweet.rb файлы

require 'twitter' 

Пример: -

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

Спасибо за помощь. Пробовал это обходное решение. Но все же дает ту же ошибку. Любой другой выход? – bhargav

Смежные вопросы