目前我的导航部分如下。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