Wizard Controller
Wizard controller provides a base class (Inheriting from ActionController::Base) that provides a DSL for quickly making Wizards.
VERY IMPORTANT!!! DONT OVERRIDE INDEX! Doing so will break all functionality. WizardController works by defining an “index” method that does all the work. To start a wizard, go to the “index” method.
Setup and Configuration
Add the following gem configuration to config/environment.rb
config.gem "wizard_controller"
Ensure the following is present in config/routes.rb
map.connect ':controller/:action/:id'
… or explicitly map the routes you want to use.
Example Controller
class ExampleController < Codeprimate::Wizard::Base
# Define the method names of the wixard steps
define_steps :page_one, :page_two, :page_three
# Specify where the Wizard should redirect upon completion.
set_finish_path "http://www.example.com/go_here_when_done.html"
# Ensure "index" is not defined!
# def index
# end
def start
# Create a "safe" index method for this controller, and handle it appropriately
end
def
# You can define whatever actions you want. WizardController doesnt get in the way.
end
def page_one
# This is a regular action method. Create indiviual views for action methods.
end
def process_page_one
# Place logic to handle any output from page one here.
# No view will be shown for this
#
# Return true if your logic wants you to go to the next step
# Return false if you want to return to the page_one view
return true
end
def page_two
# Let's say this action/view is merely informative.
# We will not supply a process method, and the user will always be able
# to go to the next step
end
def page_three
# Just another step method here
end
def process_page_three
# Since this is the last step, if this process method returns true
# the user will be redirected to the URL specified in the
# "set_finish_path" declaration at the beginning of the Controller definition
end
end
View Helper Methods
-
step_number()
: Current step index. -
total_steps()
: Total Number of steps in the wizard. -
step_completed()
: Returns boolean, whether the step has been completed. -
wizard_path()
: Wizard index path. THIS SHOULD BE THE ACTION PATH OF ALL FORMS/VIEWS WITH A “process” action. -
next_step_path()
: URL to the next step. -
previous_step_path()
: URL to the previous step. -
direct_step_path()
: URL to a direct step. Example for step 3:direct_step_path(:id=>3)
. User will stay on the current step if they have not completed the one they are requesting. -
reset_wizard_path()
: URL to reset the Wizard. -
abort_wizard_path()
: URL to abort the Wizard.