ArgumentError

hi
when i want to update a user i have this error:

ArgumentError in UsersController#update

Unknown key(s): encrypted_password, username, sign_in_count, email

Rails.root: /home/delmed/servadmin

Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:24:in `update'
lib/chrome_frame.rb:39:in `call'
Request

Parameters:

{"commit"=>"Modifier ce User",
"authenticity_token"=>"Z3PXWLIzHcu5nLm06ntenZA+yj8plf3kXrXQ17bjm2E=",
"_method"=>"put",
"utf8"=>"✓",
"id"=>"1",
"user"=>{"encrypted_password"=>"[FILTERED]",
"username"=>"user1",
"sign_in_count"=>"1",
"email"=>"user1@domaine0.com"}}

in all these parametre are in the db in users table.
in the controller i have:
def edit
    @user = User.find(params[:id])
    render :layout => 'test'
  end
def update

    @user = User.find(params[:user])
    if @user.update_attributes(params[:user])
      falsh[:notice] = 'User was successfully updated.'

    else
        falsh[:notice] = 'Problem update.'
    end

    redirect_to :action => 'index', :controller => 'user_admins'

  end

and in the view:

<%= form_for(@user) do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited
this user from being saved:</h2>

      <ul>
      <% @user.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <div class="field">
    <%= f.label :username %><br />
    <%= f.text_field :username %><br />
    <%= f.label :pwd %><br />
    <%= f.text_field :encrypted_password %><br />
    <%= f.label :email %><br />
    <%= f.text_field :email %><br />
    <%= f.label :sign_in_count %><br />
    <%= f.text_field :sign_in_count %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

please can you help me!?

hi
when i want to update a user i have this error:

ArgumentError in UsersController#update

Unknown key(s): encrypted_password, username, sign_in_count, email

Rails.root: /home/delmed/servadmin

Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:24:in `update'
lib/chrome_frame.rb:39:in `call'
Request

Parameters:

{"commit"=>"Modifier ce User",
"authenticity_token"=>"Z3PXWLIzHcu5nLm06ntenZA+yj8plf3kXrXQ17bjm2E=",
"_method"=>"put",
"utf8"=>"✓",
"id"=>"1",
"user"=>{"encrypted_password"=>"[FILTERED]",
"username"=>"user1",
"sign_in_count"=>"1",
"email"=>"user1@domaine0.com"}}

in all these parametre are in the db in users table.
in the controller i have:
def edit
@user = User.find(params[:id])
render :layout => 'test'
end
def update

@user = User.find(params[:user])
if @user.update_attributes(params[:user])
falsh[:notice] = 'User was successfully updated.'

Not part of this problem but it should be flash not falsh

else
falsh[:notice] = 'Problem update.'

Same again

end
...

Can you post the section of db/schema.rb that shows the users table.
Also post user.rb (cut out any methods that are not relevant here, if
there are any)

Colin

I think the issue is here

def update

@user = User\.find\(params\[:user\]\)

                                                 ^
if you make it

    def update
      @user = User.find(params[:id])
                                              ^

Does that fix it?

Basically I think the way you have it now has two issues
A) is trying to find the user based on the new attributes before
they've been updated in the db
B) more importantly, treating the user's attributes like options sent
to the 'find' method.
I think you can do this but you would have to specify User.find(:all,
params[:user]) or User.all(params[:user])

Hope that helps,
David