【发布时间】:2012-04-30 11:00:45
【问题描述】:
我正在使用 rails 3.2,并且在使用单个模型和与角色模型的 HABTM 关系的活动管理员旁边使用预先创建的设计时遇到问题。
我已经按照这个教程http://jaysonlane.net/2012/04/rails-devise-and-active-admin-single-user-model
并改变了一些东西,例如
unless current_user.admin?
为
unless current_user.roles.first.id==1 #checks if its an admin or not
如果我使用普通用户登录并尝试通过 :300/admin 访问管理页面,我会收到“权限被拒绝”,这是一件好事。
但是,如果我使用管理员帐户登录(它成功以管理员身份登录),然后转到:3000/admin,它会显示并出错:
NoMethodError in Admin/dashboard#index
undefined method for 'destroy_admin_user_session_path'
改成:
config.logout_link_path = :destroy_current_admin_user_session_path
or
config.logout_link_path = :destroy_current_user_session_path
也无济于事。
提前感谢您的帮助
已修复:
必须运行 rake routes 并将默认的 active_admin 初始化程序路径和方法更改为我的路由。
至于退出的错误,显然使用 Active admin 退出的默认方法是 :get。 因此,在活动管理员中单击“注销”时会发生错误。 要解决此问题,请转到 config->initializers->active_admin.rb 并添加
config.logout_link_method= :delete
希望这对某人有所帮助。
再次感谢@pjammer 和@iain 帮助我朝着正确的方向前进。 问候
【问题讨论】:
-
请提供更多堆栈信息,例如调用此
destroy_admin_user_session_path时的位置。您还一直写destroy_CURRENT_admin_user_session_path,这与所要求的不同。 -
@pjammer 我的 destroy_current_admin_sessions_path 是 Active Admin 自动创建的一部分,按照@iain 的建议,我运行了 rake 路由,发现路径不同。我现在可以登录到 Active Admin,但是当我单击注销时,它会给我一个找不到用户的错误。显然,它正在做:“id”=>“sign_out”,但在我的用户控制器中,我正在使用 @user=User.find(params[:id]) 找到用户 ID。有任何想法吗?谢谢
-
问题是,如果我使用 devise 退出,路径是 /users/sign_out 并且它可以工作。如果我在 Active Admin 中注销,路径完全相同,但返回我之前发布的错误:/
-
我想我知道问题出在哪里。它正在尝试使用方法=>“get”进行注销。不应该是“删除”吗?活动管理员创建了它,但我似乎无法在创建的代码中找到它来修改它...
标签: ruby-on-rails devise has-and-belongs-to-many activeadmin single-user