On 7 August 2010 22:07, Tim Harding <tim.hard...@gmail.com> wrote:
> Today I added a checkbox to each row of a table and a save button, to
> perform an Archive operation on N items in the table.
>
> This is essentially an update of the collection.
>
> My initial thought was to PUT to students_path but only GET and POST
> are allowed using the Rails RESTful routing.
>
> I wound up adding an :collection => {:update_all => :put} to the
> students routing and added an appropriate controller method.
>
> I'm not terribly happy with this, stylistically, though,
> pragmatically, it works.
>
> What is the proper way to manage an update to a collection w/o having
> to add an addition method to my controller?

I don't think you can avoid having an additional method in the
controller -- after all, the code required to update the collection is
going to be different from any of your other actions. But you can
avoid exposing the name of that new method in the URL.

I would try manually defining a new PUT route outside of the existing
resource map:

map.connect 'students', :controller => 'students', :action =>
'update_collection', :conditions => {:method => :put}

That should route correctly if you have a form with :url =>
students_path, :method => :put.

There may be a cleverer/neater way to do this within the resource map
itself, but this at least is a good first thing to try.

Chris

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to