baffled with form_for

I have a simple User form with a simple Usercontroller.
The 'edit' action looks like:
  def edit
    @user = current_user
  end

In the view:
<% form_for(@user) do |f| %>
blah blah
<% end %>

What it generates is:
  <form action="/user.%23%3Cuser:0x34a498c%3E" class="edit_user"
id="edit_user_196" method="post">
  <div style="margin:0;padding:0"><input name="_method" type="hidden"
value="put" />
  <input class="inline" id="user_login" name="user[login]" size="30"
type="text" />.
  <input src="/images/buttons/registreren.png?1239978560"
type="image" />
  </form>

How does that form 'action' field becomes so b0rked?

Running Rails 2.3.2

Harm

I have a simple User form with a simple Usercontroller.
The 'edit' action looks like:
def edit
   @user = current_user
end

In the view:
<% form_for(@user) do |f| %>
blah blah
<% end %>

What it generates is:
<form action="/user.%23%3Cuser:0x34a498c%3E" class="edit_user"
id="edit_user_196" method="post">
<div style="margin:0;padding:0"><input name="_method" type="hidden"
value="put" />
<input class="inline" id="user_login" name="user[login]" size="30"
type="text" />.
<input src="/images/buttons/registreren.png?1239978560"
type="image" />
</form>

How does that form 'action' field becomes so b0rked?

Is user an active record object ?

Fred

That was my initial hunch as well. And it is an AR object.

I believe that the fact that the user is a singleton resource matters.
E.g.
    map.resouce :user, :controller => "Users"

I modified the form_for and passed an explicit path with :url =>
user_path. This seems to work. But it is vert strange Rails doesn't
pick this up automatically. Then again maybe I'm defining the resource
wrong.

Harm wrote:

That was my initial hunch as well. And it is an AR object.

I believe that the fact that the user is a singleton resource matters.
E.g.
    map.resouce :user, :controller => "Users"

[...]

You misspelled "resource" here. Is it also misspelled in your actual
code? If so, that could be the problem...

Best,

Ow I did misspelled it. I didn't do so in my code.

Just make users a collection (map.resources :users), then everything
will work fine. Or if your really want it to be a singleton (bad idea,
not restfull if you have more than 1 user in your app), then use
form_for :user, :object => @user.

Dmitry

Thank you Dmitry.
I'll ponder a bit on your remark, my initial gut feeling is that I do
want a singleton resource as I never want to expose more than 1 user.
Ever. Which is restful. But I'll think about it.

Most time, you can put a reference manual in your desk.
When you can't confirm the settings , you can find it very quickly.
For example :
Rails: Up and Running, Second Edition Appendix B

http://cachefly.oreilly.com/oreilly/pdfs/9780596522001_appendixB.pdf