Ruby on rails 控制器和视图的帮助器

Ruby on rails 控制器和视图的帮助器,ruby-on-rails,helper,Ruby On Rails,Helper,我有一个助手方法,需要在视图和控制器上使用。例如,绘制PayPal url的方法 def paypal_url "https://www.paypal.com/cgi-bin/webscr" end 然后在某个控制器中,我可以有如下内容: redirect_to paypal_url 从某种角度来看,我可以: <%= form_tag(paypal_url) %> 问题是:这个方法应该放在哪里? 我知道我可以将视图帮助程序包括到控制器中。这不是我的问题…您应该阅读有

我有一个助手方法,需要在视图和控制器上使用。例如,绘制PayPal url的方法

def paypal_url
   "https://www.paypal.com/cgi-bin/webscr"
end
然后在某个控制器中,我可以有如下内容:

redirect_to paypal_url
从某种角度来看,我可以:

 <%= form_tag(paypal_url) %>

问题是:这个方法应该放在哪里?


我知道我可以将视图帮助程序包括到控制器中。这不是我的问题…

您应该阅读有关演示者模式的内容。它有一个非常好的功能,但是你可以通过谷歌快速搜索从许多来源找到信息

简而言之,presenter模式是rails MVC设计的模型和视图之间的桥梁。其思想是模型逻辑不属于控制器(实际上,控制器不应该知道它所服务的模型),而且它肯定不属于视图


presenter模式提供了一种将模型逻辑绑定到视图中而不影响控制器的方法,如在ApplicationController中定义控制器:

class ApplicationController < ActionController::Base

  helper_method :paypal_url

  def paypal_url
    'https://www.paypal.com/cgi-bin/webscr'
  end

end
class ApplicationController

之后,您将能够从任何视图或控制器使用helper方法。

我知道演示者模式。我认为这种方法(paypal_url)与任何模型都没有关系。它更像是一个util类,你多久使用一次?我的意思是,只使用一个模型还是跨所有模型?在一个或多个视图中,我在多个视图中使用它。在控制器中,我在执行一些操作后使用它。应用程序控制器可能是一种方法,或者是一个应用程序范围的助手。