update _attribtutes fails to update, please help!

I am trying to update a leave but the update does not work. Please let
me know where I am making the mistake.(Looked in to the log, id in the
update SQL statment shows NULL)

View

<h1>Editing Leaves</h1>
<% form_for :leaves, @leaves, :url => { :controller =>
"leaves", :action => "update" } do |f| %>
   <%= f.text_field :id%>
    <b>Leave Type</b>
    <%= f.text_field :LEAVE_TYPE %><br>

<b>FROM_DATE</b>
    <%= f.text_field :FROM_DATE %><br>

<b>TO Date</b>
    <%= f.text_field :TO_DATE %><br>

<b>Phone Number</b>
    <%= f.text_field :PHONE_NUMBER %><br>

<b>Address</b>
    <%= f.text_field :ADDRESS %><br>

<b>Reason for Leave</b>
    <%= f.text_area :REASON_FOR_LEAVE %><br>

    <%= f.submit "update" %>

<% end %>
<%= error_messages_for :leaves %>

Controller's update method
def update
    @leaves=Leave.find(params[:id])
    if @leaves.update_attributes(params[:leave])
        #~ puts(@leaves.ID)
        flash[:notice] = 'Leave was successfully updated.'
         redirect_to :action => 'show', :id => @leaves.ID
    else
    render :action => 'edit'
     end
   end

I looked in to the log and looks like the id in update statement is
going NULL what could be the problem for this and how can I fix this.

e[0mSELECT * FROM `leaves` WHERE (`leaves`.`id` = '2') e[0m
  e[4;36;1mSQL (0.000000)e[0m e[0;1mBEGINe[0m
  e[4;35;1mLeave Update (0.000000)e[0m e[0mUPDATE `leaves` SET
`FROM_DATE` = '2008-11-05', `REASON_FOR_CANCELLATION` = NULL, `BACKUP`
= NULL, `EMP_ID` = 90268, `TO_DATE` = '2008-11-09', `ADDRESS` = NULL,
`MGR_EMP_ID` = 90000, `MANAGER_COMMENTS` = NULL, `REASON_FOR_LEAVE` =
NULL, `LEAVE_TYPE` = 'leave', `ID` = 2, `APPLIED_ON_DATE` =
'2008-09-15', `PHONE_NUMBER` = NULL, `LEAVE_STATUS` = 'PENDING' WHERE
`id` = NULL

That's really not a good idea. remove that text field.

Fred

I included the <%= f.text_field :id%> just to verify. Even after I
removed it, it does not work.

Please help.

Processing LeavesController#update (for 127.0.0.1 at 2008-10-19
01:18:59) [POST]
  Session ID:
BAh7CjoRZW1wc21ncmVtcGlkaQOQXwE6DGNzcmZfaWQiJTViZTdjMmU1ZDk1%0AZWRlODc5OTM2YjMzMjdiNWRjNTc5OgplbXBpZCIKOTAyNjgiCmZsYXNoSUM6%0AJ0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2Vk
%0AewA6DG1ncm5hbWUiF2Jvc3NmbmFtZWJvc3NsbmFtZQ%3D
%3D--1afd388b96433710a23047adc0f38b57c3422517
  Parameters: {"commit"=>"update",
"authenticity_token"=>"949d78977aa51943832f36c2768c785f8d5bbbc7",
"action"=>"update", "id"=>"4", "leaves"=>{"TO_DATE"=>"2008-12-31",
"FROM_DATE"=>"2008-12-30", "LEAVE_TYPE"=>"compoff",
"REASON_FOR_LEAVE"=>"Updated Reason for leave", "PHONE_NUMBER"=>"",
"ADDRESS"=>""}, "controller"=>"leaves"}
  e[4;36;1mLeave Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM
`leaves`e[0m
  e[4;35;1mLeave Load (0.000000)e[0m e[0mSELECT * FROM `leaves`
WHERE (`leaves`.`id` = '4') e[0m
  e[4;36;1mSQL (0.000000)e[0m e[0;1mBEGINe[0m
  e[4;35;1mLeave Update (0.000000)e[0m e[0mUPDATE `leaves` SET
`FROM_DATE` = '2008-12-30', `REASON_FOR_CANCELLATION` = NULL, `BACKUP`
= NULL, `EMP_ID` = 90268, `TO_DATE` = '2008-12-31', `ADDRESS` = NULL,
`MGR_EMP_ID` = 90000, `MANAGER_COMMENTS` = NULL, `REASON_FOR_LEAVE` =
NULL, `LEAVE_TYPE` = 'compoff', `ID` = 4, `APPLIED_ON_DATE` =
'2008-11-28', `PHONE_NUMBER` = NULL, `LEAVE_STATUS` = 'PENDING' WHERE
`id` = NULLe

Is your primary key column not called id? If so you need to use
set_primary_key

in my table ID is the primary key, what surprises me is, in the dev
log there is a ID and id with values 4 and null

UPDATE `leaves` SET `FROM_DATE` = '2008-12-30',
`REASON_FOR_CANCELLATION` = NULL, `BACKUP`
= NULL, `EMP_ID` = 90268, `TO_DATE` = '2008-12-31', `ADDRESS` = NULL,
`MGR_EMP_ID` = 90000, `MANAGER_COMMENTS` = NULL, `REASON_FOR_LEAVE`
=NULL, `LEAVE_TYPE` = 'compoff', `ID` = 4, `APPLIED_ON_DATE`
='2008-11-28', `PHONE_NUMBER` = NULL, `LEAVE_STATUS` = 'PENDING' WHERE
`id` = NULL
Thanks for your help.

I renamed the ID column to "id" and now instead of NULL I see value in
the dev log for the update query. Not getting updated yet, but I think
I will nail it down. Thanks for the help.

in my table ID is the primary key, what surprises me is, in the dev
log there is a ID and id with values 4 and null

id is not the same as ID

Fred