0

次の少しの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 例外がスローされ、それに応じてページがレンダリングされます。

4

1 に答える 1

0

缶ブロックを外して試してみてください。ユーザーがアビリティ ファイルでこれを行う権限を与えられていない場合、エラーが発生します。また、AccessDenied ブロックが ApplicationController またはターゲット コントローラーが継承するその他の親コントローラーにあることを確認します。

于 2013-10-15T06:54:29.453 に答える