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