【问题标题】:Helper for controller and views控制器和视图的助手
【发布时间】:2014-03-28 14:26:35
【问题描述】:

我有一个需要在视图和控制器上使用的辅助方法。比如画一个PayPal url的方法……

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

然后在某些控制器中我可以有类似的东西:

redirect_to paypal_url

在某些方面我可以:

 <%= form_tag(paypal_url) %>

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

我知道我可以将视图助手包含到控制器中。那不是我的问题...

【问题讨论】:

    标签: ruby-on-rails helper


    【解决方案1】:

    在 ApplicationController 中定义它,如:

    class ApplicationController < ActionController::Base
    
      helper_method :paypal_url
    
      def paypal_url
        'https://www.paypal.com/cgi-bin/webscr'
      end
    
    end
    

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

    【讨论】:

      【解决方案2】:

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

      简而言之,presenter 模式是 Rails MVC 设计的模型和视图之间的桥梁。这个想法是模型逻辑不属于控制器(实际上,控制器不应该知道它正在服务的模型),它当然不属于视图。

      演示者模式提供了一种在不影响控制器的情况下将模型逻辑绑定到视图中的方法

      【讨论】:

      • 我知道演示者模式。我认为这种方法(paypal_url)与任何模型都无关。它更像是一个 util 类
      • 您使用它的频率如何?我的意思是,仅将它与一个模型或所有模型一起使用?在一个视图或多个视图中,等等
      • 我在很多视图中都使用它。在控制器中,我在执行一些操作后使用它。
      • 应用程序控制器可能是要走的路 - 或者是应用程序范围的帮助器。
      猜你喜欢
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      相关资源
      最近更新 更多