0

ブログコントローラーで新しいアクションを表示しようとしていますが、次のエラーメッセージが表示され続けます。

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

私のブログコントローラーでは、新しいアクションを管理者のみに制限したいと思います(管理者とユーザーは2つの異なるモデルです)。これを別のモデルで動作させることができました。私が間違っていなければ、ヘルパーはすべてのクラスに参加できます。また、管理者ヘルパーからブログヘルパーにコードを追加しようとしましたが、うまくいきませんでした。

ブログコントローラーが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
4

1 に答える 1

3

この場合、ではなくでHelpersアクセスできます。ViewsControllers

解決策は、メソッドを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

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

于 2012-05-28T19:51:28.340 に答える