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 |