目前我的導航部分如下。CanCan鏈接助手
- if (can? :manage, Invoice) and (can? :manage, InvoiceItem)
%li{class: is_active?(["invoices", "invoice_items"])}
= link_to invoices_path do
%i.icon-file-text
Invoices
我看到定義能力的can方法可以接受一個數組。有沒有辦法制作罐頭?輔助方法更簡潔?
UPDATE:我寫了一個小的應用程序助手來解決這個問題。這是最好的方法嗎?
def user_can?(actions, resources)
actions.each do |action|
resources.each do |resource|
return false if cannot? action, resource
end
end
true
end
而在部分:
- if user_can? [:manage], [Invoice, InvoiceItem]
%li{class: is_active?(["invoices", "invoice_items"])}
= link_to invoices_path do
%i.icon-file-text
Invoices
結帳這個問題:http://stackoverflow.com/questions/5446654/how-do-i-use-cancan-to-authorize-an-array-of-resources – benjaminjosephw
這是爲了定義能力,對吧?我希望看到幫助者方法。我可能最終會寫一個,但在這之前想到檢查。 –
你自己的解決方案看起來不錯。如果你只是在尋找一些東西來整理你的觀點,而且看起來好像可以完成這項工作! – benjaminjosephw