2013-10-15 64 views
0

我有HAML代碼如何在rails中拋出AccessDenied異常?

%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異常並相應地在單擊鏈接時渲染頁面。

+0

我認爲條件應該是「 - 如果可以的話:編輯,數據」。你忘了指定型號名稱。 –

回答

0

刪除can塊並嘗試。如果用戶未在您的能力文件中授權來執行此操作,他將會收到錯誤消息。還要確保AccessDenied塊位於ApplicationController或您的目標控制器繼承的任何其他父控制器中。