Module: Acts::DataTable::SortableColumns::ActionController::ClassMethods
- Defined in:
- lib/acts_as_data_table/sortable_columns/action_controller.rb
Instance Method Summary collapse
-
#sortable_columns(options = {}) ⇒ Object
Sets up automatic column sorting for this controller.
Instance Method Details
#sortable_columns(options = {}) ⇒ Object
Sets up automatic column sorting for this controller
sortable_columns :only => [:index], :default => {:index => [['deleted_at', 'ASC'], ['name', 'ASC']]}
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 |
# File 'lib/acts_as_data_table/sortable_columns/action_controller.rb', line 28 def sortable_columns( = {}) #Include on-demand methods include Acts::DataTable::Shared::ActionController::OnDemand defaults = (.delete(:default) || {}).stringify_keys around_filter() do |controller, block| af_params = controller.request.params[:sortable_columns] request_defaults = defaults[controller.action_name.to_s] || [] begin #Ensure that the given action is valid if af_params.present? && %w(toggle change_direction set_base set).include?(af_params[:action].to_s) case af_action = af_params[:action].to_s when 'toggle' controller.acts_as_data_table_session.toggle_column!(af_params[:model], af_params[:column]) when 'change_direction' controller.acts_as_data_table_session.change_direction!(af_params[:model], af_params[:column]) when 'set_base' controller.acts_as_data_table_session.set_base_column!(af_params[:model], af_params[:column]) when 'set' controller.acts_as_data_table_session.set_columns!(af_params[:columns]) else raise ArgumentError.new "Invalid scope filter action '#{af_action}' was given." end end #Set the defaults as sorting columns none were set by the user if controller.acts_as_data_table_session.active_columns.empty? controller.acts_as_data_table_session.set_columns!(request_defaults) end #Set the updated filters Acts::DataTable::SortableColumns::ActionController.set_request_sort_columns!(controller.acts_as_data_table_session.active_columns) block.call ensure Acts::DataTable::SortableColumns::ActionController.clear_request_sort_columns! end end end |