我的一个模型中有一个方法,当被调用时,它使用 twitter gem 获取一条推文并存储它的某些部分。我希望能够从 Web 界面触发该操作到我的应用程序。什么是 Rails 方式来实现这一点?我已经看到一些关于不从视图调用模型方法的引用,所以我应该以某种方式从控制器中执行此操作吗?
我的方法(相关模型是 Sponsor 和 Sponsortweet(所以我的模型名称不会与 Tweet 冲突,来自 gem):
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