Column picker

How this page is built the gem renders it — this is all you write

Pass picker: true and a gear appears in the header row: the user ticks which columns are shown and (with the optional crud-columns Stimulus controller) drags to reorder them. It submits ?cols[]= to this same URL — like the sort links and filter row — so it opens and works without JavaScript. The picker groups every column by its source model (Pipedrive-style): own columns under this model, association and path columns under the model they reach — publisher.founded_on under Publisher, authors.email under Author. The selection is always intersected with the permitted set, so a forged ?cols= can only hide or reorder, never reveal one.

app/models/book.rb
fieldset :picker, %i[title genre price publisher publisher.name
                     publisher.founded_on authors.name authors.email active]   # path columns: assoc.attr
app/views/columns/index.html.erb
<%= crud_collection @books, fieldset: :picker,
                     extra_columns: @columns,   <%# declared + path + dynamic — all pickable %>
                     picker: true %>            <%# gear + read ?cols= (picked_columns: :auto) %>

Read more: Column picker  ·  Path columns

Reset
Title Genre Price Publisher Publisher › Name Publisher › Founded on Authors › Name Authors › Email Active Shelf Weight Signed Acquired
Reset
No records