Sha256: c99b88db45e05fc9918f9b3667022ab36472cf8bccb7a1a4dffd79b047f72533

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

module HyperAdmin
  class ResourceController < ApplicationController
    before_action :set_resource_class
    before_action :permit_params, only: [ :create, :update ]

    def index
      @resources = resource_class.all
      render 'admin/resources/index', layout: layout
    end

    def show
      @resource = resource
      render 'admin/resources/show', layout: layout
    end

    def new
      @resource = resource_class.new
      render 'admin/resources/new', layout: layout
    end

    def edit
      @resource = resource
      render 'admin/resources/edit', layout: layout
    end

    def create
      @resource = @resource_class.new params[@resource_class.model_name.param_key]

      if @resource.save
        redirect_to [ :admin, @resource ]
      else
        render "admin/resources/new", layout: layout
      end
    end

    def update
      @resource = @resource_class.find params[:id]

      if @resource.update params[@resource_class.model_name.param_key]
        redirect_to [ :admin, @resource ]
      else
        render "admin/resources/edit", layout: layout
      end
    end

    def destroy
      @resource = @resource_class.find params[:id]

      @resource.destroy

      redirect_to [ :admin, @resource_class ]
    end

    def resource
      resource_class.find params[:id]
    end

    def resource_class
      raise "This method must be overridden"
    end

    protected

    def set_resource_class
      @resource_class = resource_class
    end

    def permit_params
      params.permit!
    end

    def layout
      'hyper_admin/application'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hyper_admin-0.2.0 app/controllers/hyper_admin/resource_controller.rb