====== Caching Nested Forms ====== Normally, using a nested resource's url leads you to the controller of the "embedded" resource. E.g: map.resources :guests, :has_many => :registrations Produces: guest_registrations GET /guests/:guest_id/registrations(.:format) {:controller=>"registrations", :action=>"index"} POST /guests/:guest_id/registrations(.:format) {:controller=>"registrations", :action=>"create"} new_guest_registration GET /guests/:guest_id/registrations/new(.:format) {:controller=>"registrations", :action=>"new"} edit_guest_registration GET /guests/:guest_id/registrations/:id/edit(.:format) {:controller=>"registrations", :action=>"edit"} guest_registration GET /guests/:guest_id/registrations/:id(.:format) {:controller=>"registrations", :action=>"show"} PUT /guests/:guest_id/registrations/:id(.:format) {:controller=>"registrations", :action=>"update"} DELETE /guests/:guest_id/registrations/:id(.:format) {:controller=>"registrations", :action=>"destroy"} (You can output this yourself using ''rake routes'') This is obviously bad if you want to use nested **forms**, where you need the controller to be the one for the parent object. In a nested form, the CRUD (Create, Read, Update, Delete) actions on the nested model are automatically handled for you, so there's no real need to access the nested model's controller. map.resources :guests do |guest| guest.resources :registrations, :path_prefix => ':locale/guests/:guest_id', :controller => :guests end This produces: guest_registrations GET /guests/:guest_id/registrations(.:format) {:controller=>"guests", :action=>"index"} POST /guests/:guest_id/registrations(.:format) {:controller=>"guests", :action=>"create"} new_guest_registration GET /guests/:guest_id/registrations/new(.:format) {:controller=>"guests", :action=>"new"} edit_guest_registration GET /guests/:guest_id/registrations/:id/edit(.:format) {:controller=>"guests", :action=>"edit"} guest_registration GET /guests/:guest_id/registrations/:id(.:format) {:controller=>"guests", :action=>"show"} PUT /guests/:guest_id/registrations/:id(.:format) {:controller=>"guests", :action=>"update"} DELETE /guests/:guest_id/registrations/:id(.:format) {:controller=>"guests", :action=>"destroy"} Now to be sure, following the example above you'll have to make distinction in your controller between cases where the registration id is known (all operations are on a specific registration), and where it is not (all operations pertain to a guest object). But you'd have to do that too if you were using a custom made "selected_registration_id". TO DO: include info on nested resources (routing) [[http://adamblog.heroku.com/past/2007/12/20/nested_resources_in_rails_2/|Nested Resources in Rails 2]]