Link Search Menu Expand Document

Creating default admin pages

Using the generator

Super comes with generators for generating admin routes and controllers.

bin/rails g super:resource product

That’ll update the routes file and generate a controller file like below:

# app/controllers/admin/products_controller.rb
class Admin::ProductsController < AdminController
  private

  def model
    Product
  end
end

# config/routes.rb
Rails.application.routes.draw do
  namespace :admin do
    resources :products
  end
end

Before we continue, we’ll create the rest of the admin pages too.

bin/rails g super:resource customer
bin/rails g super:resource receipt

Let’s start the rails server and navigate to http://localhost:3000/admin/products and see what the defaults look like.

The index view:

The show view:

The edit view:

The generated routes

You may have noticed that http://localhost:3000/admin gives you a 404 error. You can create something like a Admin::HomeController and customize it to your liking, but for now, let’s redirect it to a reasonable page. I’ll make it redirect to the customers page.

While we’re here, let’s also change the order of the resources. By default, Super uses the order of the routes to build the navigation links.

Rails.application.routes.draw do
  namespace :admin do
    resources :customers
    resources :receipts
    resources :products

    root to: redirect(path: "/admin/customers", status: 302)
  end
end