Refactoring multistep form rails
I would advise you to look at wicked gem: https://github.com/schneems/wicked.

Using this gem you could write:

include Wicked::Wizard
steps &lt;list_of_your_steps&gt;

def new
  session[:order_id] ||= Order.create.id
end

def show
  @order = Order.find(session[:order_id])
end

def update
  @order = Order.find(session[:order_id])
  @order.assign_attributes(params[:order_params])
  @order.current_step = step
  render_wizard @order
end


It will also separate your forms for each step. To add any  step-related action you can use step reader:

def update
  @order = Order.find(session[:order_id])
  @order.assign_attributes(params[:order_params])
  @order.current_step = step
  @order.do_sth if step == :my_step      
  render_wizard @order
end


render_wizard automatically tries to save an object and redirects you to the next step or renders current form depending on a result.