It's a simple fact of life that Web browsers don't currently support DELETE and PUT. Rails compensates for this by passing a parameter _method=DELETE. The REST religion contends that REST is simple because it cooperates with how the Web is supposed to work. However, the Web as most people use it is browser-based, and my current browser doesn't support DELETE and PUT. In fact, I'm going to have to deal with browsers that don't support DELETE and PUT for many years to come. Hence, Rails' use of _method=DELETE is a HACK in order to try to force the Web to be something it isn't, all the while claiming that RESTful routing is the way the Web is meant to work.
Nowhere is this more evident than in this code:
As I mentioned Rails has a thing called RESTful routing. It's a routing system in which the URL as well as the HTTP method determine which action gets called. I don't know why, but for some reason I have a standards body that lives inside my head, and they won't tolerate me using anything other than RESTful routing. Even though I've read "RESTful Web Services" cover-to-cover, and I've read the section on RESTful routing in the Rails book, I must admit that RESTful routing actually causes me far more pain than any other feature of Rails. I use things like nested routing, special :member actions, special :collection actions, etc. However, unless I'm doing an admin GUI, I always feel like I'm trying to shove a round peg in a square hole.
I wish I could just stick with GET and POST. I wish I could abandon the idea of Resource Oriented Architectures which insist that you may use any noun you want, as long as you only use the verbs GET, POST, PUT, DELETE, HEAD, and OPTIONS. I wish I could use any beautiful verb I wanted to and shove it in the URL all willy-nilly. I wish I could just go back to the old days of :controller, :action, and :id without people thinking I'm stuck in the stone age. I wish I could group my controllers and actions based on how the user interacts with the page instead of trying to separate everything neatly with one resource per controller.
Last of all, I wish I were more pragmatic, and that I didn't have a standards body living in my head telling me what to do all the time ;)