gem version gem downloads linters specs specs2
An Active Admin plugin to use a REST API data source in place of a local database using Active Resource.
NOTICE: currently some Active Admin features don't work as expected:
- Filters are partially supported (see example)
- Some form fields must be configured explicitly (like the associations)
- Comments are not supported
Please ⭐ if you like it.
- Add to your project's Gemfile (with Active Admin installed):
gem 'activeadmin_active_resource' - Execute bundle
- Disable comments in Active Admin config initializer (
config.comments = false)
Please take a look at the examples folder:
- a Rails6 application with Active Admin and this component, see here;
- a Rails6 API application used as data source, see here;
- a Roda API application used as data source, see here.
For more examples check the specs.
Basic instructions:
- Post model:
class Post < ActiveResource::Base self.site = 'http://localhost:3000' # API url: another Rails project, a REST API, etc. self.schema = { # Fields must be declared explicitly id: :integer, title: :string, description: :text, author_id: :integer, category: :string, dt: :datetime, position: :float, published: :boolean, created_at: :datetime, updated_at: :datetime, } end
- Post admin config:
ActiveAdmin.register Post do filter :title_cont # Ransack postfixes required (_eq, _cont, etc.) controller do def permitted_params params.permit! # Permit all just for testing end end form do |f| f.inputs do f.input :id, as: :hidden unless f.object.new_record? # Required f.input :title # ... other fields end f.actions end end
- Ransack options here
- Rails API index example with Ransack and Kaminari:
after_action :set_pagination, only: [:index] def index per_page = params[:per_page].to_i per_page = 15 if per_page < 1 @posts = Post.ransack( params[:q] ).result.order( params[:order] ).page( params[:page].to_i ).per( per_page ) end def set_pagination headers['Pagination-Limit'] = @posts.limit_value.to_s headers['Pagination-Offset'] = @posts.offset_value.to_s headers['Pagination-TotalCount'] = @posts.total_count.to_s end
If you create a new rails project don't use --skip-active-record.
If you use this component just star it. A developer is more motivated to improve a project when there is some interest. My other Active Admin components.
Or consider offering me a coffee, it's a small thing but it is greatly appreciated: about me.
- Mattia Roccoberton: author
The gem is available as open-source under the terms of the MIT.