【问题标题】:Twitter Integration using Ruby on Rails使用 Ruby on Rails 进行 Twitter 集成
【发布时间】:2013-05-22 06:18:27
【问题描述】:

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

模型和控制器文件在下面

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'

【问题讨论】:

  • 你在推特上使用的 gem 是什么?上述错误是因为您的应用程序中没有包含 gem 库。你能列出 gem 或者过去你的 gem 文件吗?
  • gemfile 被粘贴在最新的编辑中。谢谢

标签: ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2


【解决方案1】:

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

require 'twitter'

例如:-

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

【讨论】:

  • 感谢您的帮助。尝试了该解决方法。但仍然给出同样的错误。还有其他出路吗?
猜你喜欢
  • 1970-01-01
  • 2013-09-18
  • 2013-05-24
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 2012-02-15
相关资源
最近更新 更多