【问题标题】:using helpers properly in ruby on rails在 ruby​​ on rails 中正确使用助手
【发布时间】:2010-03-02 02:27:20
【问题描述】:

看起来你不能在控制器中使用帮助器,即使它们都属于同一个类。例如:XYZHelper 和 XYZController...

我的印象是,如果前缀是相同的“XYZ”,那么助手中的方法可以在控制器和视图中使用,但我认为情况并非如此。

那么我如何从控制器中删除一些常用功能并将其放入帮助程序中。我想将那段代码放在帮助程序中,因为其他控制器可能正在使用它。解决这个问题的最佳方法是什么。

谢谢, 贾伊。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    有几种方法可以在控制器之间共享一些代码:

    1. 应用程序控制器:如果有问题的代码是一个动作/方法,它应该在一个控制器中,但可以被多个控制器(或所有控制器)使用,那么这可能是放置它的地方.

    2. “lib”目录。只是一个放置应该共享的代码的通用位置。

    3. 将其放入模型中。这可能适用也可能不适用,但值得仔细查看您尝试移动的代码并考虑它是否对模型有意义(而不是控制器或 lib 中的随机类/模块) .

    【讨论】:

    • 感谢皮特的回复。出于某种原因,将代码放在应用程序控制器中似乎很脏。我有一个与模型相关的方法,但控制器和应用程序助手中的方法应该可以调用相同的方法。
    【解决方案2】:

    遵循Pete 的指导方针。如果您仍然需要公开这些方法,请执行以下操作:

    将方法添加到ApplicationController 类,并通过调用helper_method 将方法注册为辅助方法。

    class ApplicationController < ActionController::Base
    
      helper_method :foo, :bar
    
    private
    
      def foo
       "foo"
      end 
    
      def bar
       "bar"
      end 
    end
    

    【讨论】:

    • 如果我将方法添加为辅助方法,项目中的任何辅助方法都可以使用这些方法吗?谢谢。
    • 是的,如果你添加到ApplicationController,它会的。
    猜你喜欢
    • 2015-03-03
    • 2011-07-13
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多