How this page is built
the gem renders it — this is all you write
“Cards” is a custom layout you add — the gem ships only the built-in :table. Drop one partial that receives the same collection presenter (still driven by the :index fieldset) and arrange the markup however you like; the gem still derives the fields, cells, filtering, sorting and actions for you.
app/views/crud_components/layouts/_cards.html.erb
<% collection.records.each do |record| %>
<div class="card card-body">
<% collection.fields.each do |f| %><%= collection.cell(f, record) %><% end %>
</div>
<% end %>
app/views/books/index.html.erb
<%= crud_collection @books, fieldset: :index, layout: :cards %>
Read more: Add a layout · Views