Module: Effective::CrudController::Paths
- Included in:
- Effective::CrudController
- Defined in:
- app/controllers/concerns/effective/crud_controller/paths.rb
Instance Method Summary collapse
- #referer_redirect_path ⇒ Object
- #resource_action_path(action) ⇒ Object
- #resource_destroy_path ⇒ Object
- #resource_duplicate_path ⇒ Object
- #resource_edit_path ⇒ Object
- #resource_index_path ⇒ Object
- #resource_new_path ⇒ Object
- #resource_redirect_path(resource, action) ⇒ Object
- #resource_show_path ⇒ Object
- #specific_redirect_path?(action = nil) ⇒ Boolean
Instance Method Details
#referer_redirect_path ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 72 def referer_redirect_path url = request.referer.to_s return if (resource && resource.respond_to?(:destroyed?) && resource.destroyed? && url.include?("/#{resource.to_param}")) return if url.include?('duplicate_id=') return unless (Rails.application.routes.recognize_path(URI(url).path) rescue false) url end |
#resource_action_path(action) ⇒ Object
111 112 113 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 111 def resource_action_path(action) effective_resource.action_path(action.to_sym, resource) end |
#resource_destroy_path ⇒ Object
107 108 109 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 107 def resource_destroy_path effective_resource.action_path(:destroy, resource) end |
#resource_duplicate_path ⇒ Object
95 96 97 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 95 def resource_duplicate_path effective_resource.action_path(:new, duplicate_id: resource.id) end |
#resource_edit_path ⇒ Object
99 100 101 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 99 def resource_edit_path effective_resource.action_path(:edit, resource) end |
#resource_index_path ⇒ Object
87 88 89 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 87 def resource_index_path effective_resource.action_path(:index) end |
#resource_new_path ⇒ Object
91 92 93 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 91 def resource_new_path effective_resource.action_path(:new) end |
#resource_redirect_path(resource, action) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 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 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 5 def resource_redirect_path(resource, action) submit = commit_action(action) redirect = submit[:redirect].respond_to?(:call) ? instance_exec(&submit[:redirect]) : submit[:redirect] # If we have a specific redirect for it commit_action_redirect = case redirect when :index ; resource_index_path when :edit ; resource_edit_path when :show ; resource_show_path when :new ; resource_new_path when :duplicate ; resource_duplicate_path when :back ; referer_redirect_path when :save ; [resource_edit_path, resource_show_path].compact.first when Symbol ; resource_action_path(redirect) when String ; redirect else ; nil end return commit_action_redirect if commit_action_redirect.present? # If we have a magic name commit_name_redirect = case params[:commit].to_s when 'Save and Add New', 'Add New' [resource_new_path, resource_index_path] when 'Duplicate' [resource_duplicate_path, resource_index_path] when 'Continue', 'Save and Continue' [resource_index_path] else [] end.compact.first return commit_name_redirect if commit_name_redirect.present? # Otherwise consider the action commit_default_redirect = case action when :create [ (resource_show_path if EffectiveResources.(self, :show, resource)), (resource_edit_path if EffectiveResources.(self, :edit, resource)), (resource_index_path if EffectiveResources.(self, :index, resource.class)) ] when :update [ (resource_edit_path if EffectiveResources.(self, :edit, resource)), (resource_show_path if EffectiveResources.(self, :show, resource)), (resource_index_path if EffectiveResources.(self, :index, resource.class)) ] when :destroy [ referer_redirect_path, (resource_index_path if EffectiveResources.(self, :index, resource.class)) ] else [ referer_redirect_path, (resource_edit_path if EffectiveResources.(self, :edit, resource)), (resource_show_path if EffectiveResources.(self, :show, resource)), (resource_index_path if EffectiveResources.(self, :index, resource.class)) ] end.compact.first return commit_default_redirect if commit_default_redirect.present? root_path end |
#resource_show_path ⇒ Object
103 104 105 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 103 def resource_show_path effective_resource.action_path(:show, resource) end |
#specific_redirect_path?(action = nil) ⇒ Boolean
82 83 84 85 |
# File 'app/controllers/concerns/effective/crud_controller/paths.rb', line 82 def specific_redirect_path?(action = nil) submit = commit_action(action) (submit[:redirect].respond_to?(:call) ? instance_exec(&submit[:redirect]) : submit[:redirect]).present? end |