为什么我无法在控制器中访问此帮助程序?

时间:2010-12-08 05:07:45

标签: ruby-on-rails

我的application_controller.rb有:

helper :all

我的application_helper.rb有:

def authorized?
   false
end

现在在我的:

Admin::PostsController < ApplicationController

  before_filter :authorized?

我收到错误:

undefined method `authorized?'

这对我来说没有任何意义,帮助:all已设置,并且此控制器继承自application_controller。

我错过了什么?

3 个答案:

答案 0 :(得分:4)

答案similar questionhere

<强>更新

答案如下

helper:all使所有助手(是的,所有助手)在视图中可用,它不包含在控制器中。

如果你想在helper和controller之间共享一些代码,这是不太理想的,因为helper是UI代码,而控制器就是控制器代码。您可以在控制器中包含帮助程序,也可以创建单独的模块,并将其包含在控制器和帮助程序中。

答案 1 :(得分:1)

您需要将授权方法移动到application_controller中。在helper :all中执行application_controller时,基本上可以在辅助程序中访问所有应用程序控制器方法,反之亦然。您正在寻找的是能够在帮助程序中定义方法并使其在控制器中可访问。相反,只需将方法从帮助程序移动到应用程序控制器,它就可以工作。

此外,如果您仍希望能够访问控制器中的辅助方法,则需要执行@template.authorized?。不确定它是否适用于rails 3。

答案 2 :(得分:0)

我不知道。但include ApplicationHelper应作为解决方法。