Class: Character::ApiController
- Inherits:
-
ActionController::Base
- Object
- ActionController::Base
- Character::ApiController
- Includes:
- AuthConcern, InstanceConcern, JsonObjectConcern, ModelClassConcern, ParamsConcern, TemplatesConcern
- Defined in:
- app/controllers/character/api_controller.rb
Overview
Author: Alexander Kravets Slate, 2014
Instance Method Summary collapse
- #create ⇒ Object
- #destroy ⇒ Object
- #edit ⇒ Object
-
#index ⇒ Object
Actions -----------------------------------------------.
- #new ⇒ Object
-
#patch ⇒ Object
process backbone model patch save.
- #show ⇒ Object
-
#update ⇒ Object
process serialized form, object attributes are in the namespace.
Methods included from JsonObjectConcern
#build_json_object, #object_fields
Methods included from TemplatesConcern
#form_action_url, #form_template
Methods included from ModelClassConcern
#form_attributes_namespace, #model_class, #model_slug
Instance Method Details
#create ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'app/controllers/character/api_controller.rb', line 106 def create @object = model_class.new( permit_params(form_attributes_namespace) ) @form_action_url = form_action_url(@object) if character_instance.before_save instance_exec &character_instance.before_save end if @object.save render json: build_json_object(@object) else render form_template end end |
#destroy ⇒ Object
157 158 159 160 161 |
# File 'app/controllers/character/api_controller.rb', line 157 def destroy @object = model_class.find(params[:id]) @object.destroy render json: nil, status: 204 end |
#edit ⇒ Object
99 100 101 102 103 |
# File 'app/controllers/character/api_controller.rb', line 99 def edit @object = model_class.find(params[:id]) @form_action_url = form_action_url(@object) render form_template end |
#index ⇒ Object
Actions -----------------------------------------------
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/controllers/character/api_controller.rb', line 17 def index order_by = params[:o] search_query = params[:q] || '' page = params[:p] || 1 per_page = params[:pp] || 25 @objects = model_class.unscoped.all # filter scopes = params.keys.select { |s| s.starts_with? 'where__' } scopes.each do |s| field_name = s.gsub('where__', '') filters = {} filters_list = params[s].split(',') if params[s].include? ':' params[s].split(',').each do |f| filters[ f.split(':').first ] = f.split(':').last end @objects = @objects.where( field_name => filters ) else @objects = @objects.where( field_name => params[s] ) end end # search if not search_query.empty? @objects = @objects.full_text_search(search_query, match: :all) end # order # format: &order_by=field_name:direction,field_name2:direction,...& if order_by filters = {} order_by.split(',').each do |filter| = filter.split(':') filters[.first] = .last object_fields.append(.first) end @objects = @objects.order_by(filters) end # callback if character_instance.before_index instance_exec &character_instance.before_index end # pagination @objects = @objects.page(page).per(per_page) # result item_objects = @objects.map { |o| build_json_object(o) } render json: item_objects end |
#new ⇒ Object
92 93 94 95 96 |
# File 'app/controllers/character/api_controller.rb', line 92 def new @object = model_class.new @form_action_url = form_action_url(@object) render form_template end |
#patch ⇒ Object
process backbone model patch save
123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'app/controllers/character/api_controller.rb', line 123 def patch @object = model_class.find(params[:id]) @object.assign_attributes(permit_params) if character_instance.before_save instance_exec &character_instance.before_save end if @object.save render json: :ok else render json: @object.errors end end |
#show ⇒ Object
86 87 88 89 |
# File 'app/controllers/character/api_controller.rb', line 86 def show @object = model_class.find(params[:id]) render json: @object end |
#update ⇒ Object
process serialized form, object attributes are in the namespace
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'app/controllers/character/api_controller.rb', line 140 def update @object = model_class.find(params[:id]) @object.assign_attributes( permit_params(form_attributes_namespace) ) @form_action_url = form_action_url(@object) if character_instance.before_save instance_exec &character_instance.before_save end if @object.save render json: build_json_object(@object) else render form_template end end |