2011-11-24 19 views
3

我需要在ActiveAdmin表單中僅向特定用戶顯示一些表單字段。 但是,當我嘗試檢查與此代碼用戶狀態:無法在AcitveAdmin表單定義中訪問設計current_admin_user

ActiveAdmin.register Store do 
    # ... 
    form do |f| 
    f.inputs "Basic" do 
     if current_admin_user.super_admin? 
     f.input :admin_user 
     end 
    # ... 
    end 
    end 
end 

我得到

undefined local variable or method `current_admin_user' for #<ActiveAdmin::DSL:0xdb8e798> 

慘慘的方法也沒有在ActiveAdmin表單定義工作。

通常我的問題是:如何根據當前用戶類型管理管理界面顯示? 特別是,如何從ActiveAdmin定義中獲取當前的設計用戶對象?

回答

0

我找到了解決此問題的解決方法。在/app/admin/stores.rb:

ActiveAdmin.register Store do 
    # ... 
    form :partial => 'form' 
    # ... 
end 

,然後在/app/views/admin/stores/_form.html.haml:

= semantic_form_for [:admin, @store] do |f| 
    = f.inputs "Basic" do 
    - if current_admin_user.super_admin? 
     =f.input :admin_user 

這不是方便所有,但作品。

2

這是一個範圍問題。您可以嘗試使用f.template對象訪問幫助器方法,如下所示:

ActiveAdmin.register Store do 
    # ... 
    form do |f| 
    f.inputs "Basic" do 
     if f.template.current_admin_user.super_admin? 
     f.input :admin_user 
     end 
    # ... 
    end 
    end 
end 

祝您好運。

0

我知道這個線程有點老,但我只是找到了一個很好的解決方案。我使用的不是設計,我使用日誌Twitter的API在我的用戶

active_admin.rb,尋找config.current_user_methodcurrent_admin_user

config.current_user_method = :current_user

更改默認值current_user也改變了logout_link_path以包括您的路線as: :destroy_user_session