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
Ensure the following is present in config/routes.rb
… or explicitly map the routes you want to use.
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 foobar # 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.