Forum: Ruby on Rails update _attribtutes fails to update, please help!

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
rvruby (Guest)
on 2008-10-18 18:18
(Received via mailing list)
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.

 [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
Frederick Cheung (Guest)
on 2008-10-18 18:19
(Received via mailing list)
On Oct 18, 5:15 pm, rvruby <xtendedmem...@gmail.com> 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
>
> <h1>Editing Leaves</h1>
> <% 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
rvruby (Guest)
on 2008-10-18 21:55
(Received via mailing list)
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 Cheung <frederick.che...@gmail.com>
Frederick Cheung (Guest)
on 2008-10-18 21:58
(Received via mailing list)
Is your primary key column not called id? If so you need to use
set_primary_key

Sent from my iPhone
rvruby (Guest)
on 2008-10-18 22:10
(Received via mailing list)
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 Cheung <frederick.che...@gmail.com>
rvruby (Guest)
on 2008-10-18 22:36
(Received via mailing list)
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.
Frederick Cheung (Guest)
on 2008-10-19 01:47
(Received via mailing list)
Sent from my iPhone

On 18 Oct 2008, at 21:10, rvruby <xtendedmemory@gmail.com> 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
This topic is locked and can not be replied to.