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