我正在尝试找到在Rails应用程序中执行方法的最佳方法。
我的模型中有以下内容:
class Tweet < ActiveRecord::Base
def self.fetch_all
# do something
end
end
我可以转到我的Rails控制台并运行Tweet.fetch_all
并执行此方法中的所有操作。但是,我想在我的应用程序中创建一个链接,以在视图中执行此提取。我是否需要在控制器内部创建一个新动作才能实现此目的?
答案 0 :(得分:2)
是的,如果你想创建一个单独的链接来执行这个功能,你需要首先在控制器内创建一个动作来实现这个目的,然后你可以创建一个辅助方法或者简单地使用{{1将链接放在您的视图中。
原因是,如果您在其他一些REST操作中添加此方法,则只要呈现该操作,就会执行此link_to
,这可能不是您想要的。
因此,您应该创建另一个专门为您执行此代码的操作,从而允许您在用户单击该链接时专门执行此方法。
答案 1 :(得分:2)
操作由控制器执行,因此您需要在tweets_controller.rb中定义一个操作:
def fetch_all
Tweet.fetch_all #what do you want to do with this?
redirect_to :back, notice: 'just called fetch_all'
end
并定义一种在routes.rb
中实现此操作的方法post 'tweets/fetch_all', to: 'tweets#fetch_all'
然后你可以使用
<%= link_to 'Fetch all!', fetch_all_tweets_path, method: :post %>
您的观点中的任何位置。