With Ruby on Rails, REST is a great concept in terms of simplifying things for the developer and making resources easy for machines to access, but it also produces phenomenally ugly URLs for humans.
For example, using the popular RESTful Authentication plugin to handle user login and authentication, it creates two controllers for authentication and authorization, users and sessions. This is because user represents the long term resources associated with a user, such as the login and password, while a session represents the login info associated with a login session such as the cookie resources. Thus, the login url for a site would be site.com/sessions/new.
By default, it also creates a route to help this: map.login '/login', :controller => 'sessions', :action => 'new'
However, this is really only a kludge, because on submit in order for the routes to work right, the form it creates uses <% form_tag session_path do -%>. This causes the post of the form to go to SessionsController#create, but if the form submission fails (such as due to bad credentials) the user's browser is left at site.com/session, which looks really awkward. Worse yet, if the user manually were to enter that url, it is unavailable unless I define an index method. If I change the form_tag to read <% form_tag login_path do -%> then this results in POSTS to SessionsController#new, which completely messes up the REST.
How can I have consistent and reasonable looking URLs with REST? Overall, I really am tempted by the convenience of using REST, but it seems pretty wrong that this should produce (negative) changes visible to the user.