我正在尝试在我的博客控制器中查看我的新操作,但我不断收到以下错误消息:
NameError in BlogsController#new
undefined local variable or method `authenticate_admin'
在我的博客控制器中,我想将新操作仅限制为管理员(管理员和用户是两种不同的模型)。我能够在另一个模型中使用它。如果我没有弄错的话,帮助者对所有班级都开放。我还尝试将我的管理员助手中的代码添加到博客助手中,但这不起作用。
为什么我的博客控制器无法使用我的authenticate_admin方法?
感谢lookign:)
以下是相关文件:
blogs_controller.rb
class BlogsController < ApplicationController
before_filter :authenticate_admin, :only => [: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
答案 0 :(得分:3)
在这种情况下Helpers
可以访问Views
,而不是Controllers
。
解决方案是将您的方法从 admins_helper.rb 移至ApplicationController
并将其设置为helper_methods
。您可以在Controllers
和Views
。
示例:
class ApplicationController < ActionController::Base
# Helpers
helper_method :authenticate_admin
def authenticate_admin
deny_admin_access unless admin_signed_in?
end
end
阅读有关helper_method
的文档: