0

Rolify、Devise、CanCan、および Tabulous を使用するアプリがあります。

私のファイルでは、次のように呼び出してタブのtabulous.rbを定義できるようにしたいと考えています。Visibility?

(current_user.has_role? :admin)

したがって、config.tabsdo は次のようになります。

# TAB NAME | DISPLAY TEXT | PATH | VISIBILE? | ENABLED?
[ :admin_tab, 'ADMIN' , ingredients_path , (current_user.has_role? :admin) , true ],

/users/sign_inパスに入ったときを除いて、ほとんどのページで問題なく動作します。次のエラーが返されます。

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 行目は、ファイル=tabs内の呼び出しを指しているだけです。applications.html

問題は、関数/users/sign_inにアクセスできないことです。.has_role?

tabulous.rbファイルが使用できるようにするにはどうすればよいですか?

4

3 に答える 3

2

私はこのコードを試してみました!

config.tabs do
  showTab = (current_user && (current_user.has_role? :admin))
  [
    [ :users_tab, "Users", users_path, showTab, showTab],
  ]
end
于 2012-11-23T11:53:32.613 に答える
0

私が間違っていなければ、tabulous は運用モードのときに tabulous.rb をキャッシュするため、開発中はほとんどの場合このアプローチが機能するかもしれませんが、運用中は機能しなくなり、誰もが同じタブを取得することになります。他の。

于 2012-08-01T16:35:08.093 に答える
0

`tabulous.rb ファイルで簡単な修正を行うことができます

[:admin_tab, 'Admin', users_path, current_user && current_user.has_role?(:admin), true],

current_userユーザーがサインアウトしたときは定義されていないため、tabulous.rb実際に定義されている場合はファイルもチェックインする必要がありますcurrent_user

于 2012-11-14T04:21:18.650 に答える