モデルの1つに、呼び出されたときにTwitter gemを使用してツイートをフェッチし、その一部を保存するメソッドがあります。Webインターフェイスからアプリへのアクションをトリガーできるようにしたいと思います。これを達成するためのRailsの方法は何ですか?ビューからモデルメソッドを呼び出さないという言及をいくつか見たので、代わりにコントローラー内からこれを行う必要がありますか?
私の方法(関連するモデルはスポンサーとスポンサーツイートです(したがって、私のモデル名は、宝石からのツイートと競合しません):
def create_tweet
tweet = Twitter.user_timeline(self.twitter).first
self.sponsortweets.create!(content: tweet.text,
tweet_id: tweet.id,
tweet_created_at: tweet.created_at,
profile_image_url: tweet.user.profile_image_url,
from_user: tweet.from_user,)
end
編集:
tweet
スポンサーコントローラーでメソッドを作成しました。
def tweet
@sponsor = Sponsor.find(params[:id])
@sponsor.create_tweet
end
そして、私のconfig/routes.rbに以下を追加しましたmatch 'tweet', to: 'sponsors#tweet', via: :post
。
私の見解では次のコードと同様に(私はhamlを使用しています):
= button_to :tweet, tweet_path(@sponsor)
ただし、ボタンをクリックすると、次のエラーが発生します。
Couldn't find Sponsor without an ID