如何在rails中抛出AccessDenied Exception?

时间:2013-10-15 04:54:31

标签: ruby-on-rails ruby-on-rails-3 haml cancan

我有以下haml代码

 %tr
            %td= account['name']
            %td= account['id']
            %td= account['description']
            -if account['edit']
              %td= link_to shorten(account['data']), data_path(account['id'])
              -if can? :modify
                %td= link_to 'Edit', edit_data_path(id: account['id'])
              -else
                %td None
            -else 
              %td None
              -if can? :modify
                %td= link_to 'Create', new_data_path(id: account['id'])
              -else
                %td None

我的应用程序控制器中有以下位

rescue_from CanCan::AccessDenied do |exception|
    render status: 403, template: "/errors/403_forbidden.html.haml"

我面临的问题是,只有满足if can?条件时才会显示编辑链接和创建链接。我想让它们出现,即使条件为false但是抛出Access Denied异常并在点击链接时相应地呈现页面。

1 个答案:

答案 0 :(得分:0)

删除can块并试用。如果用户未在您的能力文件中授权执行此操作,则他将收到错误消息。还要确保AccessDenied块位于ApplicationController或目标控制器继承的任何其他父控制器中。