2017-11-09 16 views
1

私は5.0 カンカンActiveadmin:未定義のメソッド `ACCESS_DENIED」

Activeadmin 1.6.10 工夫4.2.0 レールを使用するには、私がnewrelicでこのエラーを持っているregulary:active_admin.rbのIに

NoMethodError: undefined method `access_denied' for #<Admin::FollowupsController:0x007f112917d270> 

セット:設定でアクセス拒否:

config.on_unauthorized_access = :access_denied 

どのようにこのエラーを削除し、リダイレクトfoを適切に管理できますか500の代わりにaccess_denied?

+0

ログアウトしてから権限のないゲストユーザーと同じ管理者ページにアクセスすると、すべて正常に機能します(500エラーなし)。 – AntonTkachov

答えて

2

あなたは不正アクセスに:access_deniedメソッドを使用するようにActiveAdminを設定しているとして、あなたはapplication_controller.rbでこのメソッドを定義して、彼らがアクセスする権限を持っているリソースにアクセスする権限を持っていないページからユーザーをリダイレクトする必要があります。ブラウザにエラーメッセージを表示することもできます。典型的な例:HTML要求のためのホーム・ページにリダイレクトし、JSON要求を禁止403を返す

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 

    def access_denied(exception) 
    redirect_to admin_root_path, alert: exception.message 
    end 
end 

例:

def access_denied(exception) 
    respond_to do |format| 
    format.json { head :forbidden, content_type: 'text/html' } 
    format.html { redirect_to main_app.root_url, notice: exception.message } 
    end 
end 

あなたは403禁止HTTPコードを返すことを好む場合は、作成public/403.htmlファイルなどのようにそれをレンダリング:

def access_denied(exception) 
    render file: Rails.root.join('public', '403.html'), 
     status: 403, 
     layout: false 
end 
関連する問題