Skip to content

Instantly share code, notes, and snippets.

@carlosramireziii
Last active May 19, 2021 17:53
Show Gist options
  • Select an option

  • Save carlosramireziii/651062e9fb434543a5865a9fc48aaee8 to your computer and use it in GitHub Desktop.

Select an option

Save carlosramireziii/651062e9fb434543a5865a9fc48aaee8 to your computer and use it in GitHub Desktop.
"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
Copy link
Copy Markdown
Author

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

@claudey
Copy link
Copy Markdown

claudey commented Apr 21, 2020

Thanks, this helped me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment