Skip to content
Rails Controller class for creating wizards
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


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 ""

  # Ensure "index" is not defined!
  # def index
  # end

  def start
    # Create a "safe"  index method for this controller, and handle it appropriately

  def foobar
    # You can define whatever actions you want.  WizardController doesnt get in the way.

  def page_one
    # This is a regular action method. Create indiviual views for action methods.

  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

  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

  def page_three
    # Just another step method here

  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

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.

Something went wrong with that request. Please try again.