undefined局部变量或方法`authenticate_admin’

我正在尝试在我的博客控制器中查看我的新操作,但我不断收到以下错误消息:

NameError in BlogsController#new undefined local variable or method `authenticate_admin' 

在我的博客控制器中,我想将新操作仅限制为管理员(管理员和用户是两个不同的模型)。 我能够在另一个模型中使用它。 如果我没弄错的话,帮助者对所有class级都开放。 我还试图将我的管理员助手中的代码添加到博客助手中,但这不起作用。

为什么我的博客控制器不能使用我的authenticate_admin方法?

谢谢你的外观:)

以下是相关文件:

blogs_controller.rb

 class BlogsController  [:new] def new @blog = Blog.new @title = "New Article" end end 

admins_helper.rb

 def authenticate_admin deny_admin_access unless admin_signed_in? end def deny_admin_access redirect_to admin_login_url, :notice => "Please sign in as admin to access this page." end def admin_signed_in? !current_admin.nil? end def current_admin @current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id] end 

在这种情况下,可以在Views中访问Helpers而不是在Controllers

解决方案是将方法从admins_helper.rb移动到ApplicationController并将它们设置为helper_methods 。 您可以在ControllersViews访问它们。

例:

 class ApplicationController < ActionController::Base # Helpers helper_method :authenticate_admin def authenticate_admin deny_admin_access unless admin_signed_in? end end 

阅读有关helper_method文档:

http://api.rubyonrails.org/classes/AbstractController/Helpers/ClassMethods.html#method-i-helper_method