Class: Carnival::BaseAdminController
- Inherits:
-
InheritedResources::Base
- Object
- InheritedResources::Base
- Carnival::BaseAdminController
- Defined in:
- app/controllers/carnival/base_admin_controller.rb
Instance Method Summary collapse
- #create ⇒ Object
- #index ⇒ Object
- #load_dependent_select_options ⇒ Object
- #load_select_options ⇒ Object
- #render_inner_form ⇒ Object
- #update ⇒ Object
Instance Method Details
#create ⇒ Object
34 35 36 37 38 39 |
# File 'app/controllers/carnival/base_admin_controller.rb', line 34 def create create! do |success, failure| success.html { redirect_to back_or_model_path, notice: I18n.t('messages.created') } failure.html { instantiate_model && render('new') } end end |
#index ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/controllers/carnival/base_admin_controller.rb', line 8 def index @query_form = QueryFormCreator.create(@presenter, params) @model = @presenter.model_class @query_service = QueryService.new(table_items, @presenter, @query_form) @thead_renderer = TheadRenderer.new @presenter.fields_for_action(:index), @query_form.sort_column, @query_form.sort_direction respond_to do |format| format.html do @records = @query_service.get_query @paginator = Paginator.new @query_form.page, @query_service.page_count end format.csv do @records = @query_service.records_without_pagination render csv: @model.model_name.human end end end |
#load_dependent_select_options ⇒ Object
54 55 56 57 58 59 |
# File 'app/controllers/carnival/base_admin_controller.rb', line 54 def presenter = params[:presenter].constantize.send(:new, controller: self) model = presenter.relation_model(params[:field].gsub('_id', '').to_sym) @options = model.list_for_select(add_empty_option: true, query: ["#{params[:dependency_field]} = ?", params[:dependency_value]]) render layout: nil end |
#load_select_options ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'app/controllers/carnival/base_admin_controller.rb', line 61 def model_name = params[:model_name] search_field = params[:search_field] presenter = params[:presenter_name].constantize.send(:new, controller: self) model = presenter.relation_model(model_name.to_sym) list = [] model.where("#{search_field} like '%#{params[:q]}%'").each do |elem| list << { id: elem.id, text: elem.send(search_field.to_sym) } end render json: list end |
#render_inner_form ⇒ Object
48 49 50 51 52 |
# File 'app/controllers/carnival/base_admin_controller.rb', line 48 def render_inner_form @presenter = presenter_name(params[:field]).new controller: self model_class = params[:field].classify.constantize @model_object = model_class.find(params[:id]) end |
#update ⇒ Object
41 42 43 44 45 46 |
# File 'app/controllers/carnival/base_admin_controller.rb', line 41 def update update! do |success, failure| success.html { redirect_to back_or_model_path, notice: I18n.t('messages.updated') } failure.html { instantiate_model && render('edit') } end end |