Skip to content
No description, website, or topics provided.
Ruby HTML CSS JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Build Status Code Climate Test Coverage Dependency Status

This gem provides you the standard logic of a rails controller which needn't to be implemented by every controller in the same way. Therefore, this gem gives you the chance to avoid a lot of redundant code which furthermore improves the maintainability of your code. It requires Ruby >= 2.0.

Use it in your application

Installation is done by the following commands:

$ gem install simple_controller
$ bundle

Use it in your controllers:

class YourController < ActionController::Base (or another parent class extending this class)
  include SimpleController::IndexController (index)
  include SimpleController::CreateController (new + create)
  include SimpleController::ShowController (show)
  include SimpleController::UpdateController (edit + update)
  include SimpleController::DestroyController (destroy)

The generated instance variable usable for your views will be plural model name at index site, otherwise the singular model name. Assuming a model called pen will named @pens at index site, otherwise @pen.

Provided methods

Actually, SimpleController provides the CRUD methods of the included controllers. If you don't want to have permitted all model attributes, you need to override the model_params method. If you use a customized id for your model, you also need to override the set_object method.

That means that you just need to add a method like this to your class:

def model_params
    params.require(:user).permit(:name, :age)


def set_object

If you want to change the default notices, you need to override the destroy_notice, create_notice or update_notice methods returning your opted message as string. Per default, the name of the model and a description of the action is displayed:

def create_notice
  # e.g. User has been created
  "#{model_name} #{I18n.t('successful_creation')}"

Moreover, the redirect paths after a creation, update and delete can be customized by overriding the create_redirect, update_redirect or delete_redirect method. The all expect the wanted path as string output:

def create_redirect
  # must be the path as string!

Required Adaption:

Add to your language files translations for the following symbols which are appended after the model's name:

  successful_creation: has been created
  successful_update: has been updated
  successful_deletion: has been deleted
  unsuccessful_deletion: could not deleted




Changes should be provided by a pull request. Additionally, rake must be executed outside the test folders to work correctly.

You can’t perform that action at this time.