Hi David,

On Apr 22, 2006, at 8:59 PM, David Heinemeier Hansson wrote:

# PUT /books/4 --> { :controller => "books", :action => "update", :id => 4 }

# POST /books/4 --> { :controller => "books", :action => "update", :id => 4 }

If I understand Rails correctly, you are usually submitting key- value pairs of a modified record, which is NOT identical to the _actual_ row of the table. Thus, "POST" would actually be the correct semantics for what you are trying to accomplish.

Most forms, in this context, give you the entire record and you then use that to update the record. So it's

@book.attributes = params[:book]

When params[:book] will usually keep all of the attributes. At least all of the attributes that's intended for the user to see/edit.

Well, that's what doesn't quite seem right to me:

* If "/books/4" represents the "record", the PUT would need to contain _everything_ about that record; synthesizing additional fields (like last modified) seems like 'cheating', and inconsistent with PUT semantics

* If "/books/4" represents the page, the PUT would need to contain the HTML that GET would return

But, as it happens, we're only updating a set of attributes, which isn't necessarily identical to either the entire record or the entire page. Therefore, since we're just sending a list of parameters which "somehow" get turned into a record, "POST" is actually more appropriate.

At least, that's what I've always been told. CC-ing Sam in case he can clear things up for us...

-- Ernie P.


--
David Heinemeier Hansson
http://www.37signals.com    -- Basecamp, Backpack, Writeboard, Tada
http://www.rubyonrails.com  -- Web-application framework
http://www.loudthinking.com -- Broadcasting Brain


_______________________________________________
microformats-rest mailing list
[email protected]
http://microformats.org/mailman/listinfo/microformats-rest

_______________________________________________
microformats-rest mailing list
[email protected]
http://microformats.org/mailman/listinfo/microformats-rest

Reply via email to