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