我使用Cancan和Devise进行了简单的设置。
我想只向“管理员”和拥有“位置”的用户显示编辑按钮:
所以在show.html.erb我有
<% if can? :manage, location, :user_id == current_user.id %>
<%= link_to 'Edit', edit_location_path %>
<% end %>
我的能力.rb看起来像这样
if user.roles.include?('User')
can [:show, :index, :create], Location
can :manage, Location, :user_id => user.id
end
locationController在最上面包含了这个:
load_and_authorize_resource
用户ID在Location.user_id
中引用但它没有显示编辑按钮......
我错过了什么吗?
PS:user.id在视图中不起作用。和current_user.id在ability.rb
中不起作用PPS:我的角色存储在一个数组中,例如:Roles [“User”,“Admin”]并且运行良好。
答案 0 :(得分:0)
我已经使用了
can :manage, Location, :user_id => user.id.to_s
我希望它有所帮助!