当我试图在我的twitter feed控制器中调用tweet.entities时,我得到了以下错误。
#Twitter::Status:0x94d4bf4调用了私有方法‘`entities’
我在代码中没有名为entities的方法,我甚至做了一个完整的文件搜索来检查。
我需要重命名对象的实体部分,或者以某种方式找到这个所谓的私有方法的位置,或者以某种方式绕过它。我在twitter_feeds控制器中的方法如下:
def hometimeline
@user = User.find(current_user.id)
tweets = @user.tweeting.user_timeline(count: '10', include_entities: true)
parsed_tweets = []
i = 0
tweets.each do |tweet|
more = Hash.new
more['test'] = tweet
internal_hash = Hash.new
mappings = {"source" => "fixed"}
another = more['test']
boo = Array(tweet)
#newhash = Hash[twee.map {|k, v| [mapping[k], v] }]
#newhash = Hash[more.map {|k, v| [mappings[k], v] }]
#newhash = Hash[tweet.map {|k, v| [mappings[k] || k, v] }]
internal_hash['parsed_text'] = tweet.entities
internal_hash['id'] = tweet.id
internal_hash['raw_text'] = tweet.text
internal_hash['name'] = tweet.user.name
internal_hash['screen_name'] = tweet.user.screen_name
internal_hash['user_id'] = tweet.user.id
internal_hash['user_image_url'] = tweet.user.profile_image_url
parsed_tweets << internal_hash
i = i + 1
end
respond_to do |format|
format.json { render json: parsed_tweets }
end结束
本质上,我正在向客户端发送一组解析的tweet,并希望在服务器上实现链接包装等功能。
我有没有办法找到代码认为这个方法在哪里,或者有没有办法让它不是私有的,或者忽略它,这样我就可以调用tweet.entities了。
编辑:需要注意的一点是,我确实有一个实体模型和实体控制器,但我已经删除了它们,并且仍然得到了这个。
谢谢
发布于 2012-08-15 21:19:54
事实证明,这个错误是由Twitter gem引起的,他们有调用entities对象的方法,即tweet.urls、tweet.user_mentions等,而不是我认为的tweet.entities.user_mentions。
文档在这里http://rdoc.info/gems/twitter/Twitter/Tweet
https://stackoverflow.com/questions/11953718
复制相似问题