我有2個資源 - 書架和書本,其中每個書架都有很多書籍。activeadmin資源索引頁上的組記錄
有什麼辦法可以通過Shelf對圖書進行分組(書本索引頁)?具體而言,我希望書籍按書架排序,並且每當書架更改時,我想指出在書籍列表中(插入一個書架上的新書架名稱與書架之間的新書架名稱)
I我正在使用rails 3.2和activeadmin 0.6.0。
我有2個資源 - 書架和書本,其中每個書架都有很多書籍。activeadmin資源索引頁上的組記錄
有什麼辦法可以通過Shelf對圖書進行分組(書本索引頁)?具體而言,我希望書籍按書架排序,並且每當書架更改時,我想指出在書籍列表中(插入一個書架上的新書架名稱與書架之間的新書架名稱)
I我正在使用rails 3.2和activeadmin 0.6.0。
聽起來像是一個自定義頁面
http://www.activeadmin.info/docs/10-custom-pages.html
工作通過
通過有序@books在主動管理控制器,然後使用table_for在內容塊(也許一個新表對於每個貨架?或頂部的貨架搜索字段 http://blog.agile-pandas.com/2011/07/06/activeadmin-beyond-the-basics
:)
在Rails 4.2.5.2上使用ActiveAdmin 1.0.0.pre2,結果很簡單。該解決方案基本上只有20行自定義ActiveAdmin視圖類。
請注意第一行中的文件名作爲暗示放置代碼或對現有文件進行添加/更改的提示。
# config/application.rb
module MyApp
class Application < Rails::Application
config.autoload_paths << config.root.join('lib')
end
end
# models/book.rb
class Book < ActiveRecord::Base
belongs_to :shelf
def shelf_name
shelf.name
end
end
# admin/books.rb
ActiveAdmin.register Book do
index as: :grouped_table, group_by_attribute: :shelf_name do
# columns
end
end
# lib/active_admin/views/index_as_grouped_table.rb
require 'active_admin/views/index_as_table'
module ActiveAdmin
module Views
class IndexAsGroupedTable < IndexAsTable
def build(page_presenter, collection)
if group_by_attribute = page_presenter[:group_by_attribute]
collection.group_by(&group_by_attribute).sort.each do |group_name, group_collection|
h3 group_name
super page_presenter, group_collection
end
else
super
end
end
end
end
end
讓我解釋一下他媽的發生在index_as_grouped_table.rb
什麼:
類IndexAsGroupedTable
擴展ActiveAdmin的IndexAsTable
類和覆蓋build
方法添加分組功能。 在您的admin/books.rb
文件中,在索引宏中,您定義了一個附加選項:group_by_attribute
,它命名Book
類的屬性名稱,通過該屬性名稱來分組。 如果沒有提供該屬性,它將回退到IndexAsTable
的行爲。 如果提供該屬性,它會按該屬性group_by
收集,sort
散列和運行與來自散列每個group_name
和group_collection
的塊,印刷<h3>
與group_name
然後只是調用IndexAsTable
的build
方法(super
)顯示標準表。
就像你看到的,只有這些組被排序,並且一個h3被添加到頁面中。其他一切都像標準索引表一樣工作。
注意:這不涉及額外的sql分組。這使用
Enumerable
類的ruby的group_by
方法。因此,如果集合中有許多行,它可能會很慢。
對於最新版本和/或叉子去我的my gist on github。
貸款的方法去ariejan de vroom。
對我來說,它的工作,但分組只行當前頁 – okliv
okliv,它適用於分頁資源索引的任何頁面上我。 – glasz