这就是我可以看到用户角色的方式:current_admin_user.role
我正在使用CanCan
我怎么能
- 我试过这个但是没有用。
dashboard_controller.rb
if current_admin_user.role == 'customer'
redirect_to shipments_path
end
我在admin / dashboards.rb
中尝试了这个controller do
def scoped_collection
if current_admin_user.role == 'customer'
redirect_to shipments_path
end
end
end
但会产生错误undefined method 'controller' for ActiveAdmin::Dashboards:Module (NoMethodError)
答案 0 :(得分:3)
我想你知道这个地方:https://github.com/gregbell/active_admin/issues/501,关于那边的仪表板的一些好主意。
使用以下内容在dashboards.rb文件中渲染部分:
ActiveAdmin::Dashboards.build do
section 'Common', :priority => 1 do
div do
render 'common_dashboard'
end
end
...
end
然后从你应该在app / views / admin / dashboard / _common_dashboard.html.erb创建的partial,你可以访问current_admin_user对象:
<ul>
<li><%= current_admin_user.role %></li>
</ul>
从dashboards.rb'''环境'''访问current_admin_user的另一种方法是使用arbre语法并制定仪表板部分,如此
section "Common",:priority => 1 do
div do
if current_admin_user.role == "customer"
li "You are a customer"
end
end
''
end
答案 1 :(得分:1)
您也可以使用以下条件限制仪表板部分: 因此,所有用户都可以使用仪表板,但只允许使用允许的部分
section("Recent Users", :if => proc{ can?(:manage, User) }) do
ul do
User.limit(10).order('created_at desc').collect do |user|
li link_to(user.name, admin_user_path(user))
end
end
答案 2 :(得分:1)
您可以通过这种方式在仪表板部分内访问控制器操作redirect_to
:
section do
if current_admin_user.role == 'customer'
controller.redirect_to shipments_path #any path you have in application
else
div do
...
end
end