Effective Resources
Make your controller an effective resource controller.
Implements the 7 RESTful actions as a one-liner on any controller.
Getting Started
gem 'effective_resources'
Run the bundle command to install it:
bundle install
Install the configuration file:
rails generate effective_resources:install
The generator will install an initializer which describes all configuration options.
Usage
Add to your contoller:
class PostsController < ApplicationController
include Effective::CrudController
member_action :something
protected
# If it's a Hash of attributes, the controller will call .where(attributes)
# and the attributes will be used to initialize the datatable on index
#
# If it's an ActiveRecord scope, or symbol, we initialize a datatable with {resource_scope: true}
# and leave it as a TODO for the datatable to do the right thin .
def post_scope
{client_id: current_user.client_id}
# Post.where(client_id: current_user.client_id)
# :approved
end
def post_params
params.require(:post).permit(:id, :title, :body)
end
end
What it does
Implements the 7 RESTful actions: index, new, create, show, edit, update, destroy.
- Loads an appropriate
@posttype instance - Sets a
@page_title(effective_pages). - Calls authorize as per the configured
EffectiveResources.authorization_method(flow through to CanCan or Pundit) - Does the create/update save
- Sets a
flash[:success]and redirects on success, or sets aflash.now[:danger]and renders on error.
Helpers
simple_form_submit
Call simple_form_submit(f) like follows:
= simple_form_for(post) do |f|
= f.input :title
= f.input :body
= simple_form_submit(f)
to render 3 submit buttons: Save, Save and Continue, and Save and Add New.
simple_form_save
Call simple_form_save(f) like follows:
= simple_form_for(post) do |f|
...
= simple_form_save(f)
to render just the Save button, with appropriate data-disable, title, etc.
License
MIT License. Copyright Code and Effect Inc.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Bonus points for test coverage
- Create new Pull Request