1. Namespaces in Rails 3 and respond_with

    Assume we’ve got a namespace of Customer and in that a controller for Organisations.

    This doesn’t work

    class Customer::OrganisationsController < ApplicationController
    
      respond_to :html 
    
      def update
        @organisation = Organisation.find(params[:id])
        @organisation.update_attributes(params[:organisation])
        respond_with [:customer,@organisation]
      end
    
    end
    

    It redirects to the customer_organisation show method without checking for errors. I think it should work, but the respond_with code doesn’t handle it properly. Instead, try this:

    class Customer::OrganisationsController < ApplicationController
    
      respond_to :html 
    
      def update
        @organisation = Organisation.find(params[:id])
        @organisation.update_attributes(params[:organisation])
        respond_with @organisation, :location => customer_organisation_url(@organisation)
      end
    
    end
    

    I’m not sure it’s annoying enough to want to patch it. There are a lot of edge cases in Rails in general around name spaces. Also, note it’s not just update that needs this but also create.

    Imported Comments:

    malclocke

    respond_with :customer, @organisation should work, without the square brackets

    1 year ago  /  0 notes