如何在视图中执行方法?

时间:2013-12-11 19:05:43

标签: ruby-on-rails ruby methods model

我正在尝试找到在Rails应用程序中执行方法的最佳方法。

我的模型中有以下内容:

class Tweet < ActiveRecord::Base
  def self.fetch_all
    # do something
  end
end

我可以转到我的Rails控制台并运行Tweet.fetch_all并执行此方法中的所有操作。但是,我想在我的应用程序中创建一个链接,以在视图中执行此提取。我是否需要在控制器内部创建一个新动作才能实现此目的?

2 个答案:

答案 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 %>

您的观点中的任何位置。