2013-02-05 108 views
0

我是相當新的active_admin,我想知道是否有一種方法可以實現以下Rails的ActiveAdmin和的has_many協會

我有兩個型號

User 
    belongs_to :group 

Group 
has_many :users 

我已經成功地創建頁activeadmin爲組和用戶,現在我想要的是顯示屬於某個組的用戶。我在組索引頁上有按鈕manage_members,它應該只顯示該組的成員。我可以在哪裏刪除組中的成員或添加更多成員。

這是我已經能夠到目前爲止

member_action :manage_members do 
    @group = Group.find(params[:id]) 
    @page_title = "Manage Groups > @#{@group.name}, Edit Members" 
end 

做和視圖的應用程序/搶答/管理/組/ manage_users.html.arb

table_for assigns[:group].users do 
    column "Name" do |u| 
    u.user_id 
    end 
    column "email" do |u| 
    u.user.email 
    end 
    column "Created Date" do |u| 
    u.user.created_at 
    end 

    column "OfficePhone" do |u| 
    u.user.office_no 
    end 
end 

這顯示了成員的組,但我必須做所有的工作在這個頁面上添加編輯刪除一個成員,我不能在這裏有active_admin過濾器和其他很酷的東西,這就像一個自定義頁面,

有沒有辦法有一個索引頁面(具有過濾器批處理操作的所有優點)(像用戶那樣),但僅顯示組的用戶。就像一個範圍化的索引頁面,它顯示在一個組中的用戶,我對該頁面具有與任何活動管理索引頁面相同的控制權限?更多類似下面

This is What I mean by index page

圖像,而不是做所有的工作我自己目前看起來像

I dont want this

很新,active_admin所以道歉,如果有一些真正直截了當說我錯過了。

感謝

回答

1

也許一個過濾器會做。那會是什麼樣子(把它在你把member_action相同的文件)

filter :group, :as => :select, :collection => proc { Group.for_select } 

的PROC是有確保修改組(添加/刪除/ ..)會立即反映到選擇列表在過濾器中。這與生產中的類緩存有關。 不要忘記把這個範圍放在你的組模型中。

scope :for_select, :select => [:id, :name], :order => ['name asc'] 

另一種方法是使用範圍。如果您在您的集團模式,就像一個蛞蝓/標籤,可以作爲一種方法頭有一個字段,那麼你可以做這樣的事情在你的activeadmin用戶寄存器塊:

Group.all.each do |group| 
    # note the sanitization of the Group name in the gsub 
    scope "#{group.name.gsub(/-/,'_')}".to_sym 
end 

這在您的用戶模式:

Group.all.each do |group| 
    # note the sanitization of the Group name in the gsub 
    scope "#{group.name.gsub(/-/,'_')}".to_sym, joins(:group).where("group.name = ?",role.name) 
    # using joins(:group) or joins(:groups) makes a difference, 
    # so not sure as I have not tested, but maybe the where should be 
    # ....where("groups.name = .... 
end 

它應該給你上面索引視圖喜歡這裏漂亮的按鈕:如果你想這對於has_and_belongs_to_many關係http://demo.activeadmin.info/admin/orders

,我建議你先看看這個Rails3 Active Admin - How to filter only records that meet all checked items in collection

祝你好運!