Update _attribtutes fails to update, please help!


#1

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

Editing Leaves

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

FROM_DATE
<%= f.text_field :FROM_DATE %>

TO Date
<%= f.text_field :TO_DATE %>

Phone Number
<%= f.text_field :PHONE_NUMBER %>

Address
<%= f.text_field :ADDRESS %>

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

<%= 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.

[0mSELECT * FROM leaves WHERE (leaves.id = ‘2’) [0m
[4;36;1mSQL (0.000000) [0m [0;1mBEGIN [0m
[4;35;1mLeave Update (0.000000) [0m [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


#2

On Oct 18, 5:15 pm, rvruby removed_email_address@domain.invalid wrote:

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

Editing Leaves

<% form_for :leaves, @leaves, :url => { :controller => "leaves", :action => "update" } do |f| %> <%= f.text_field :id%>

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

Fred


#3

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”}
[4;36;1mLeave Columns (0.000000) [0m [0;1mSHOW FIELDS FROM
leaves [0m
[4;35;1mLeave Load (0.000000) [0m [0mSELECT * FROM leaves
WHERE (leaves.id = ‘4’) [0m
[4;36;1mSQL (0.000000) [0m [0;1mBEGIN [0m
[4;35;1mLeave Update (0.000000) [0m [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 = NULL

On Oct 18, 9:18 pm, Frederick C. removed_email_address@domain.invalid


#4

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

Sent from my iPhone


#5

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.

On Oct 19, 12:57 am, Frederick C. removed_email_address@domain.invalid


#6

Sent from my iPhone

On 18 Oct 2008, at 21:10, rvruby removed_email_address@domain.invalid wrote:

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


#7

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.