[英]Rails admin and cancancan, undefined method `new' for nil:NilClass
I've followed the guides in the cancancan wiki on how to use cancancan to authenticate admins for rails_admin.我遵循了 cancancan wiki 中关于如何使用 cancancan 对 rails_admin 的管理员进行身份验证的指南。 It works so far, but when I try to access the admin dashboard with an account that has admin privileges, I run into the error到目前为止它有效,但是当我尝试使用具有管理员权限的帐户访问管理仪表板时,我遇到了错误
NoMethodError in RailsAdmin::MainController#dashboard RailsAdmin::MainController#dashboard 中的 NoMethodError
undefined method 'new' for nil:NilClass未定义的方法 'new' 为 nil:NilClass
https://imgur.com/bKE5mv6 https://imgur.com/bKE5mv6
What's going on and how can I fix this?这是怎么回事,我该如何解决?
ability.rb能力.rb
if user.admin?
can :manage, :all
can :access, :rails_admin # this line
can :dashboard, :all # and this one
elsif user.userrole?
can :read, Item
can :manage, User, :user_id=>user.id
else
can :read, Item
end
rails_admin.rb rails_admin.rb
config.authorize_with :cancancan2
According to the rails_admin wiki根据rails_admin wiki
Specifics:规格:
rails 5.1.5导轨 5.1.5
cancancan 2.1.3坎坎坎 2.1.3
rails_admin 1.3.0 rails_admin 1.3.0
devise 4.4.3设计 4.4.3
rails_admin.rb rails_admin.rb
### Popular gems integration
## == Devise ==
config.authenticate_with do
warden.authenticate! scope: :user
end
config.current_user_method(&:current_user)
## == CancanCan ==
## 「cancan」 ng
## 「cancancan」 ok
config.authorize_with :cancancan
I could solve it by reinstalling the admin_rails gem, In the terminal我可以通过在终端中重新安装 admin_rails gem 来解决它
$ rails g rails_admin:install $ rails g rails_admin:install
then I gave him overwrite YES然后我给他覆盖 YES
I tried to fix it but could not, so I went for Pundit gem and It worked fine with rails admin, They also have a gem with rails admin implementation which you can use.我试图修复它但无法修复,所以我选择了 Pundit gem,它与 rails admin 一起工作得很好,他们还有一个带有 rails admin 实现的 gem,你可以使用它。 Kudos点赞
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.