Class: NitroRails::SequenceController
- Inherits:
-
ActionController::Base
- Object
- ActionController::Base
- NitroRails::SequenceController
- Defined in:
- app/controllers/nitro_rails/sequence_controller.rb
Class Method Summary collapse
Instance Method Summary collapse
- #first_step_in_sequence_path(resource = nil) ⇒ Object
- #last_step_in_sequence_path ⇒ Object
-
#next_step_in_sequence_path(id = nil) ⇒ Object
Convenience Methods.
- #previous_step_in_sequence_path ⇒ Object
- #redirect_to_step(step) ⇒ Object
- #set_sequence ⇒ Object
-
#start ⇒ Object
Initialization Information.
Class Method Details
.before_each_step(action) ⇒ Object
13 14 15 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 13 def self.before_each_step(action) before_action action, only: [:step, :finish] end |
.get_step_for(step) ⇒ Object
17 18 19 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 17 def self.get_step_for(step) return @sequence[step] end |
.sequence(*steps) ⇒ Object
9 10 11 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 9 def self.sequence(*steps) @sequence = [:start, *steps, :finish] end |
Instance Method Details
#first_step_in_sequence_path(resource = nil) ⇒ Object
36 37 38 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 36 def first_step_in_sequence_path(resource = nil) url_for(request.params.slice(:controller).merge(action: @sequence[:first_step])) if @sequence[:first_step] end |
#last_step_in_sequence_path ⇒ Object
40 41 42 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 40 def last_step_in_sequence_path url_for(request.params.slice(:controller).merge(action: @sequence[:last_step])) if @sequence[:last_step] end |
#next_step_in_sequence_path(id = nil) ⇒ Object
Convenience Methods
27 28 29 30 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 27 def next_step_in_sequence_path(id = nil) # binding.pry url_for(request.params.slice(:controller).merge(action: @sequence[:next_step], id: id)) if @sequence[:next_step] end |
#previous_step_in_sequence_path ⇒ Object
32 33 34 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 32 def previous_step_in_sequence_path url_for(request.params.slice(:controller).merge(action: @sequence[:previous_step])) if @sequence[:previous_step] end |
#redirect_to_step(step) ⇒ Object
21 22 23 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 21 def redirect_to_step(step) redirect_to self.class.get_step_for(step) end |
#set_sequence ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 50 def set_sequence steps = self.class.instance_variable_get(:@sequence) current_step_index = steps.index(params[:action].gsub(/!/, "").to_sym) @sequence = { steps: steps, first_step: steps[0], previous_step: current_step_index <= 1 ? nil : steps[current_step_index - 1], current_step: steps[current_step_index], next_step: steps[current_step_index + 1], last_step: steps[-1], } end |
#start ⇒ Object
Initialization Information
46 47 48 |
# File 'app/controllers/nitro_rails/sequence_controller.rb', line 46 def start redirect_to next_step_in_sequence_path end |