Class: NitroRails::SequenceController

Inherits:
ActionController::Base
  • Object
show all
Defined in:
app/controllers/nitro_rails/sequence_controller.rb

Class Method Summary collapse

Instance Method Summary collapse

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_pathObject



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_pathObject



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_sequenceObject



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

#startObject

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