module ActionCrud::Controller
Public Instance Methods
_guess_controller_model()
click to toggle source
# File lib/action_crud/controller.rb, line 66 def _guess_controller_model if namespace.nil? controller_name.classify.safe_constantize || name.gsub(/controller$/i, '').classify.safe_constantize else name.gsub(/^#{namespace.to_s}|controller$/i, '').classify.safe_constantize end end
create()
click to toggle source
POST /model
# File lib/action_crud/controller.rb, line 115 def create self.record = model.new(record_params) respond_to do |format| if record.save format.html { redirect_to edit_record_path(record), notice: "#{model} was successfully created." } format.json { render json: record, status: :created } else format.html { render :new } format.json { render json: record.errors, status: :unprocessable_entity } end end end
destroy()
click to toggle source
DELETE /model/1
# File lib/action_crud/controller.rb, line 143 def destroy record.destroy respond_to do |format| format.html { redirect_to records_path, notice: "#{model} was successfully destroyed." } format.json { head :no_content } end end
edit()
click to toggle source
GET /model/1/edit
# File lib/action_crud/controller.rb, line 107 def edit respond_to do |format| format.html { render :edit } format.json { render json: record } end end
index()
click to toggle source
GET /model
# File lib/action_crud/controller.rb, line 77 def index self.records = model.send index_scope self.records = model.send(:search, params[:search]) if should_search? self.records = paginate(records) if respond_to? :per_page respond_to do |format| format.html { render :index } format.json { render json: records } end end
model()
click to toggle source
# File lib/action_crud/controller.rb, line 152 def model record.nil? ? model_class : record.class end
Also aliased as: current_model
new()
click to toggle source
GET /model/new
# File lib/action_crud/controller.rb, line 89 def new self.record = model.new respond_to do |format| format.html { render :new } format.json { render json: record } end end
permit_params(options = {})
click to toggle source
# File lib/action_crud/controller.rb, line 24 def permit_params(options = {}) attribs = model_class.try(:attribute_names).to_a default = { only: attribs, except: [], also: [], array: [], hash: [] } options = Hash[default.merge(options).map { |k, v| [k, Array(v).map(&:to_sym)] }] permit = options.except(:except).values.flatten.uniq permit.reject! { |a| a.blank? || a.in?(options[:except] + [:id]) } permit.map! { |a| a.in?(options[:array]) ? [a => []] : a } permit.map! { |a| a.in?(options[:hash]) ? [a => {}] : a } self.permitted_params = permit end
record()
click to toggle source
# File lib/action_crud/controller.rb, line 158 def record instance_variable_get "@#{instance_name}" end
Also aliased as: current_record
records()
click to toggle source
# File lib/action_crud/controller.rb, line 164 def records instance_variable_get "@#{collection_name}" end
Also aliased as: current_records
set_index_scope(scope = 'all')
click to toggle source
# File lib/action_crud/controller.rb, line 60 def set_index_scope(scope = 'all') self.index_scope = scope.to_sym end
set_model_class(klass = nil)
click to toggle source
# File lib/action_crud/controller.rb, line 55 def set_model_class(klass = nil) klass = klass.constantize if klass.is_a? String self.model_class = klass || model_name.instance_variable_get('@klass') end
set_model_name(name = nil)
click to toggle source
# File lib/action_crud/controller.rb, line 42 def set_model_name(name = nil) name = name || _guess_controller_model name = name.constantize if name.is_a? String unless name.nil? self.model_name = name.model_name self.instance_name = model_name.singular self.collection_name = model_name.plural set_model_class end end
set_namespace(name = nil)
click to toggle source
# File lib/action_crud/controller.rb, line 37 def set_namespace(name = nil) self.namespace = name set_model_name end
show()
click to toggle source
GET /model/1
# File lib/action_crud/controller.rb, line 99 def show respond_to do |format| format.html { render :show } format.json { render json: record } end end
update()
click to toggle source
PATCH/PUT /model/1
# File lib/action_crud/controller.rb, line 130 def update respond_to do |format| if record.update(record_params) format.html { redirect_to edit_record_path(record), notice: "#{model} was successfully updated." } format.json { render json: record, status: :ok } else format.html { render :edit } format.json { render json: record.errors, status: :unprocessable_entity } end end end
Private Instance Methods
record=(value)
click to toggle source
# File lib/action_crud/controller.rb, line 172 def record=(value) instance_variable_set "@#{instance_name}", value end
record_params()
click to toggle source
# File lib/action_crud/controller.rb, line 184 def record_params params.require(:"#{instance_name}").permit permitted_params end
records=(value)
click to toggle source
# File lib/action_crud/controller.rb, line 176 def records=(value) instance_variable_set "@#{collection_name}", value end
set_permitted_params()
click to toggle source
# File lib/action_crud/controller.rb, line 188 def set_permitted_params att_method = :permitted_attributes attributes = record.try(att_method) || model.try(att_method) self.permitted_params = Array(attributes) end
set_record()
click to toggle source
# File lib/action_crud/controller.rb, line 180 def set_record self.record = model.find(params[:id]) end
should_search?()
click to toggle source
# File lib/action_crud/controller.rb, line 195 def should_search? params[:search].present? && model.respond_to?(:search) end