4

Twitterフィードコントローラーでtweet.entitiesを呼び出そうとすると、次のエラーが発生します。

プライベートメソッド`entities'が#Twitter::Status:0x94d4bf4を呼び出しました

コード内にエンティティと呼ばれるメソッドはありません。完全なファイル検索を行って確認しました。

オブジェクトのエンティティ部分の名前を変更するか、このいわゆるプライベートメソッドがどこにあるかを見つけるか、何らかの方法でそれを迂回する必要があります。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.entitiesを呼び出す方法はありますか?

編集:注意すべきもう1つのポイントは、エンティティモデルとエンティティコントローラーがありましたが、それらを削除しても、これを取得していることです。

ありがとう

4

1 に答える 1

6

このエラーはTwittergemが原因であることが判明し、エンティティオブジェクト、つまり、私が思っていたようにtweet.entities.user_mentionsではなくtweet.urls、tweet.user_mentionsなどを呼び出すためのメソッドがあります。

ドキュメントはこちらhttp://rdoc.info/gems/twitter/Twitter/Tweet

于 2012-08-15T13:19:54.140 に答える