问题描述
我使用Devise,CanCanCan和rails_admin。具有可访问性,一切都很好,但是我无法收到Flash消息并重定向到root_path并显示以下屏幕。关于如何获取即时消息的任何想法和提示?其他Flash消息(警报和通知)均显示OK。非常感谢。
我的ApplicationController是:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :authenticate_user!
def after_sign_in_path_for(resource)
stored_location_for(resource) || welcome_path_url
end
rescue_from CanCan::AccessDenied do |exception|
respond_to do |format|
format.json { head :forbidden,content_type: 'text/html' }
format.html { redirect_to main_app.root_url,notice: exception.message }
format.js { head :forbidden,content_type: 'text/html' }
end
end
end
rails_admin.rb
RailsAdmin.config do |config|
### Popular gems integration
## == Devise ==
config.authenticate_with do
warden.authenticate! scope: :user
end
config.current_user_method(&:current_user)
## == CancanCan ==
# config.authorize_with :cancancan
config.authorize_with do
redirect_to main_app.root_path unless current_user.superuser ==true
end
<....>
end
ability.rb
class Ability
include CanCan::Ability
def initialize(user)
# Define abilities for the passed in user here. For example:
#
user ||= User.new # guest user (not logged in)
if user.superuser?
can :manage,:all
cannot :access,:rails_admin
cannot :manage,:dashboard
end
if user.office?
cannot :access,:dashboard
can :read,:all
end
end
end
编辑: 工作答案已标记。 我也应该这样定义状态变量:
def status
@user_role ||= User.new(read_attribute(:user_role))
end
在我的User
模型中。