I have a problem with my routing. When a user performs an illegal checkout action (end time < start time) it should route back to to the 'checkout' action. However, it is instead going to the 'edit' action.
<b>'rake routes' </b>
users GET /users(.:format) {:controller=>"users", :action=>"index"} POST /users(.:format) {:controller=>"users", :action=>"create"} new_user GET /users/new(.:format) {:controller=>"users", :action=>"new"} edit_user GET /users/:id/edit(.:format) {:controller=>"users", :action=>"edit"} user GET /users/:id(.:format) {:controller=>"users", :action=>"show"} PUT /users/:id(.:format) {:controller=>"users", :action=>"update"} DELETE /users/:id(.:format) {:controller=>"users", :action=>"destroy"} new_session GET /session/new(.:format) {:controller=>"sessions", :action=>"new"} edit_session GET /session/edit(.:format) {:controller=>"sessions", :action=>"edit"} session GET /session(.:format) {:controller=>"sessions", :action=>"show"} PUT /session(.:format) {:controller=>"sessions", :action=>"update"} DELETE /session(.:format) {:controller=>"sessions", :action=>"destroy"} POST /session(.:format) {:controller=>"sessions", :action=>"create"} labs GET /labs(.:format) {:controller=>"labs", :action=>"index"} POST /labs(.:format) {:controller=>"labs", :action=>"create"} new_lab GET /labs/new(.:format) {:controller=>"labs", :action=>"new"} edit_lab GET /labs/:id/edit(.:format) {:controller=>"labs", :action=>"edit"} lab GET /labs/:id(.:format) {:controller=>"labs", :action=>"show"} PUT /labs/:id(.:format) {:controller=>"labs", :action=>"update"} DELETE /labs/:id(.:format) {:controller=>"labs", :action=>"destroy"} lab_categories GET /lab_categories(.:format) {:controller=>"lab_categories", :action=>"index"} POST /lab_categories(.:format) {:controller=>"lab_categories", :action=>"create"} new_lab_category GET /lab_categories/new(.:format) {:controller=>"lab_categories", :action=>"new"} edit_lab_category GET /lab_categories/:id/edit(.:format) {:controller=>"lab_categories", :action=>"edit"} lab_category GET /lab_categories/:id(.:format) {:controller=>"lab_categories", :action=>"show"} PUT /lab_categories/:id(.:format) {:controller=>"lab_categories", :action=>"update"} DELETE /lab_categories/:id(.:format) {:controller=>"lab_categories", :action=>"destroy"} checkout_index GET /checkout(.:format) {:controller=>"checkout", :action=>"index"} POST /checkout(.:format) {:controller=>"checkout", :action=>"create"} new_checkout GET /checkout/new(.:format) {:controller=>"checkout", :action=>"new"} edit_checkout GET /checkout/:id/edit(.:format) {:controller=>"checkout", :action=>"edit"} GET /checkout/:id(.:format) {:controller=>"checkout", :action=>"show"} PUT /checkout/:id(.:format) {:controller=>"checkout", :action=>"update"} DELETE /checkout/:id(.:format) {:controller=>"checkout", :action=>"destroy"} login / {:controller=>"sessions", :action=>"new"} signup /signup {:controller=>"users", :action=>"new"} myaccount /myaccount {:controller=>"myaccount", :action=>"myaccount"} logout /logout {:controller=>"sessions", :action=>"destroy"} /labs/checkout/:id {:controller=>"checkout", :action=>"checkout"} /labs/checkout/:id/update {:controller=>"checkout", :action=>"update"} checkout /labs/checkout/:id/edit {:controller=>"checkout", :action=>"update"} root / {:controller=>"home", :action=>"index"} /:controller/:action/:id /:controller/:action/:id(.:format)
routes.rb: map.checkout '/labs/checkout/:id', :controller => 'checkout', :action => 'checkout' map.checkout '/labs/checkout/:id/update', :controller => 'checkout', :action => 'update' map.checkout '/labs/checkout/:id/edit', :controller => 'checkout', :action => 'update' map.root :controller => "home"
# default routes map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format'
<b>CheckoutController update action: </b>
def update @lab = Lab.find(params[:id])
respond_to do |format| if @lab.update_attributes(params[:lab]) flash[:notice] = 'Lab was successfully updated.' format.html { redirect_to(@lab) } format.xml { head :ok } else format.html { render :action => "checkout" } format.xml { render :xml => @lab.errors, :status => :unprocessable_entity } end end end
<b>LabController update </b>
def update @lab = Lab.find(params[:id])
respond_to do |format| if @lab.update_attributes(params[:lab]) flash[:notice] = 'Lab was successfully updated.' format.html { redirect_to(@lab) } format.xml { head :ok } else format.html { render :action => "edit" } #format.html { redirect_to :back } format.xml { render :xml => @lab.errors, :status => :unprocessable_entity } end end end
Let me know if there is something I forgot to include.
Thanks