Ruby on rails 我怎样才能使用“;。有“U角色”吗;从Rolify到Tabulous?
我有一个应用程序,使用Rolify、design、CanCan和Tabulous 在我的Ruby on rails 我怎样才能使用“;。有“U角色”吗;从Rolify到Tabulous?,ruby-on-rails,devise,cancan,Ruby On Rails,Devise,Cancan,我有一个应用程序,使用Rolify、design、CanCan和Tabulous 在我的tabulous.rb文件中,我希望能够通过调用以下命令来定义选项卡的可见性?: (current_user.has_role? :admin) 因此,config.tabsdo将如下所示: # TAB NAME | DISPLAY TEXT | PATH | VISIBILE? | ENABLED? [ :admin_tab, 'ADMIN' , ingredients_path , (current_u
tabulous.rb
文件中,我希望能够通过调用以下命令来定义选项卡的可见性?
:
(current_user.has_role? :admin)
因此,config.tabs
do将如下所示:
# TAB NAME | DISPLAY TEXT | PATH | VISIBILE? | ENABLED?
[ :admin_tab, 'ADMIN' , ingredients_path , (current_user.has_role? :admin) , true ],
除了进入路径中的/users/sign_外,它对大多数页面都适用;它返回以下错误:
NoMethodError in Devise/sessions#new
Showing /Users/[myname]/Projects/[project-name]/app/views/layouts/application.html.haml where line #24 raised:
undefined method `has_role?' for nil:NilClass
第24行只指向applications.html
文件中的=tabs
调用
我知道问题在于/users/sign\u in
无法访问.has\u角色?
功能
我该如何制作才能让
tabulus.rb
文件使用它呢?如果我没有弄错的话,tabulus在生产模式下会缓存tabulus.rb,所以虽然您的方法在开发过程中大部分时间都有效,但在生产过程中会出现故障,每个人最终都会得到相同的选项卡,不管怎样。可以在`tabulus.rb文件中进行简单的修复
[:admin_tab, 'Admin', users_path, current_user && current_user.has_role?(:admin), true],
current\u user
在用户注销时未定义,因此如果确实定义了current\u user
,则还需要签入tabulous.rb
文件。我已经尝试了此代码并成功
config.tabs do
showTab = (current_user && (current_user.has_role? :admin))
[
[ :users_tab, "Users", users_path, showTab, showTab],
]
end
谢谢你的回复@Karen。不久前,我通过重新评估用户的可访问性来解决这个问题。