2014-09-04 74 views
0

某些管理員的用戶需要有兩個表格視圖,例如,一個模型Bar:它們已有的默認值和具有不同的一組列的附加新表格。ActiveAdmin:如何添加第二個自定義索引表頁面

的設置是這樣的:

ActiveAdmin.register Bar do 
    # … 
    index do 
    column :name 
    column :phone 
    column :address 
    end 
    # … 

它預計爲增加另一index塊中一樣容易:

ActiveAdmin.register Bar do 
    # … 
    index do 
    column :name 
    column :price 
    column :bartender 
    end 

    index name: 'location' do 
    column :name 
    column :phone 
    column :city 
    column :country 
    end 

,然後就得到了另外的突出的地方。

正如你可能猜到的那樣並不那麼簡單。 ActiveAdmin對虛擬index name:屬性一無所知,只是選擇第一個index塊靜靜地忽略第二個index塊。

ActiveAdmin文檔顯示的方式來add second/third/etc index page輕鬆,但不同種類的:

index as: :grid do |bar| 
    link_to(image_tag(bar.photo_path), admin_bar_path(bar)) 
end 

不錯,但如何添加不同的列索引表視圖的副本?

回答

2

有一個竅門。

作爲顯示ActiveAdmin的index方法允許as:參數與編碼爲符號索引的類型之前(ATM,這些中的一個::block:blog:grid:table)。除了用符號(其是隻是一些內部AA類的快捷方式),所以可以通過任何Ruby類:

index as: CustomTableIndex do 
    # … 
end 

這裏是解決方案的代碼。 四件事情我們的新表的索引頁做:

  1. 創建的ActiveAdmin::Views::IndexAsTable
  2. 子類的子類中定義一個類的方法index_name與新索引頁面的名稱
  3. 通過新的類該index方法
  4. 添加國際化翻譯的新標籤頁按鈕(如果需要)
app/admin/bars.rb

ActiveAdmin.register Bar do 

    # … 

    # 1. 
    class MyLocationIndex < ActiveAdmin::Views::IndexAsTable 
    # 2. 
    def self.index_name 
     "bars_location" 
    end 
    end 

    # 3. 
    index as: MyLocationIndex do 
    column :name 
    column :phone 
    column :city 
    column :country 
    end 

    # … 

end 
config/locales/admin.yml

en: 
    # … 
    active_admin: 
    index_list: 
     bars_location: "Locations" 
相關問題