无法使用’helper_method’和渲染模板

我正在使用Ruby on Rails 3,我正在尝试设置一个helper_method ,它应该仅适用于控制器(例如:AccountsController)以及与之相关的所有视图,当它的视图在与该控制器无关的另一个视图中呈现时也是如此。 我从Railcast“限制访问”中获取灵感。

在我的accounts_controller.rb文件中,我有

 # Just to know, I am using a User namespace... class Users::AccountsController < ApplicationController helper_method :show_authorization def show_authorization false # This returning value is just an example end end 

在我的views / users / accounts / show.html.erb文件中

  You are authorized!  You are NOT authorized!  

如果我浏览URL http:///users/accounts/1但是如果我以这种方式将show.html.erb文件作为模板呈现在另一个视图文件中,则上述代码有效:

  "/users/accounts/show", :locals => { :account => @account } %> 

我收到错误:

 NameError in Users#show undefined local variable or method `show_authorization' for #<# 

为什么? 我如何解决这个问题,以便在另一个与另一个控制器相关的视图中呈现时,使show_authorization方法可用于show.html.erb视图?

PS :由于show_authorization只与AccountsController及其视图文件相关,我不想在’application_controller.rb’文件中插入相关代码,而是将其保存在’accounts_controller.rb’中。

helper_method实际上与accounts_helper.rb中的定义方法几乎相同(从技术上讲,它是针对helper类的eval代码)。 要使用此帮助程序,您需要在辅助模块中定义它并将其包含在要显示模板的控制器中。

实际问题是,在您明确要求包含它们之前,不同的控制器对您的帐户控制器帮助程序一无所知。

例子:

 module Users::AccountsHelper code_here end class ApplicationHelper helper Users::AccountsHelper end 

所有帐户帮助程序方法将在整个应用程序中可用