app/controllers/upmin/models_controller.rb in upmin-admin-0.1.01 vs app/controllers/upmin/models_controller.rb in upmin-admin-0.1.3

- old
+ new

@@ -1,22 +1,19 @@ require_dependency "upmin/application_controller" module Upmin class ModelsController < ApplicationController - before_filter :set_klass, only: [:new, :create, :show, :update, :search, :action] - before_filter :set_model, only: [:show, :update, :action] + before_filter :set_klass, only: [:new, :create, :show, :update, :destroy, :search, :action] + before_filter :set_model, only: [:show, :update, :destroy, :action] before_filter :set_page, only: [:search] before_filter :set_query, only: [:search] before_filter :set_q_for_form_values, only: [:search] before_filter :set_action, only: [:action] before_filter :set_arguments, only: [:action] - def dashboard - end - # GET /:model_name/:id def show end # GET /:model_name/new @@ -27,11 +24,11 @@ # POST /:model_name def create @model = @klass.new raw_model = @model.model - args = params[@klass.underscore_name] + args = params[@klass.underscore_name] || [] args.each do |key, value| # TODO(jon): Figure out a way to do transforms. # TODO(jon): Remove duplicate code between update and create @@ -53,11 +50,10 @@ flash.now[:alert] = "#{@klass.humanized_name(:singular)} was NOT created." render(:new) end end - # PUT /:model_name/:id def update raw_model = @model.model updates = params[@klass.underscore_name] @@ -87,10 +83,29 @@ def search # @q = @klass.ransack(params[:q]) # @results = Upmin::Paginator.paginate(@q.result(distinct: true), @page, 30) end + # DELETE /:model_name/:id + def destroy + raw_model = @model.model + #destroy does not work when using datamapper and have associations but destroy! works fine + #destroy! does not exist in ActiveRecord + if defined?(raw_model.destroy!) + @result = raw_model.destroy! #data mapper + else + @result = raw_model.destroy #active record + end + if @result + flash.now[:notice] = "#{@klass.humanized_name(:singular)} deleted successfully." + redirect_to @klass.search_path + else + flash.now[:alert] = "#{@klass.humanized_name(:singular)} was NOT deleted." + render(:show) + end + end + def action @response = @action.perform(@arguments) flash[:notice] = "Action successfully performed with a response of: #{@response}" redirect_to(@model.path) @@ -126,12 +141,16 @@ def set_klass @klass = Upmin::Model.find_class(params[:klass]) end + def set_klasses + @klasses = Upmin::Model.find_class(params[:klass]) + end + def set_action - action_name = params[:method].to_sym - @action = @model.actions.select{ |action| action.name == action_name }.first + action_name = params[:method] + @action = @model.actions.select{ |action| action.name.to_s == action_name }.first raise Upmin::InvalidAction.new(params[:method]) unless @action end def set_arguments