Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
"Best Practices For Building A Rails Admin Interface From Scratch" sample setup
<% # app/views/layouts/admin.html.erb %>
<!DOCTYPE html>
<html>
<head>
<title>Admin Interface</title>
<%= csrf_meta_tags %>
<% # Optionally use admin-specific assets here instead of the normal application assets %>
<%= stylesheet_link_tag 'admin', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'admin', 'data-turbolinks-track': 'reload' %>
</head>
<header>
<h1>Welcome Admin User</h1>
</header>
<body>
<%= yield %>
</body>
</html>
# app/controllers/admin/articles_controller.rb
# Note the namespacing and the inheritance
class Admin::ArticlesController < Admin::BaseController
def index
@articles = Article.all
end
end
# config/initializers/assets.rb
# ...
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += %w( admin.js admin.css )
# app/controllers/admin/base_controller.rb
# Inherit directly from ActionController::Base rather than ApplicationController to ensure clean separation
class Admin::BaseController < ActionController::Base
# use an admin-specific layout instead of the main application layout
layout "admin"
# all child controllers will automatically enforce access to admins only
before_action :require_admin
def require_admin
# ...
end
end
# config/routes.rb
Rails.application.routes.draw do
namespace :admin do
resources :articles
end
# ...
end
@carlosramireziii

This comment has been minimized.

Copy link
Owner Author

carlosramireziii commented Jul 1, 2017

This is a code sample to accompany the blog post "Best Practices For Building A Rails Admin Interface From Scratch"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.