在铁轨上的红宝石中正确使用帮手

时间:2010-03-02 02:27:21

标签: ruby-on-rails

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

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

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

谢谢, 洁。

2 个答案:

答案 0 :(得分:1)

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

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

  2. 'lib'目录。只是一个通用的地方放置应该共享的代码。

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

答案 1 :(得分:0)

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

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

class ApplicationController < ActionController::Base

  helper_method :foo, :bar

private

  def foo
   "foo"
  end 

  def bar
   "bar"
  end 
end