在Ruby on Rails中,view中定义的方法不能覆盖辅助方法?

时间:2011-01-20 15:33:29

标签: ruby-on-rails

我有一个可以打印出一些调试信息的调试方法,这个调试方法在application_helper.rb中定义要禁用此方法,以便不为此文件打印调试信息,我添加了

def debugp; return nil; end
在使用原始debugp的视图文件中的

...但似乎这个新定义无法覆盖debugp的原始定义(因为调试信息仍然打印出来)。有没有办法覆盖它?还有其他方法可以禁用打印,但我想找出有关覆盖应用程序助手中的方法的部分。感谢。

1 个答案:

答案 0 :(得分:1)

您无法覆盖视图文件中的方法,但是您可以在相应的帮助器中覆盖它 - 如果您使用Rails生成器生成控制器,那么它也会生成一个帮助器,例如,“人们“控制器会有这些文件:

  • 应用程序/控制器/ people_controller.rb
  • 应用程序/视图/人/ *。html.erb
  • 应用程序/助手/ people_helper.rb

因此,要从应用程序助手中覆盖辅助方法,请将助手方法定义放在视图中,而不是放在助手中:

module PeopleHelper
  def debugp; return nil; end
end

希望有所帮助,