You are right, I have a check box helper (by default, it's sending 0
or 1 );-) and also my checkbox  is represented in my database by an
integer ==> 0  means unchecked , 1 means check.

So my form is sending 0 because my checkbox is unchecked and before
sending, the attribute of the object had the same value 0 (I checked
in the database to be sure)

So I don't understand why rails tell me the state of this attribute
change ? because the attribute is not changing ... 0 ==> 0

Best regards,
Antoine


On Jan 12, 11:18 am, Eloy Duran <[email protected]> wrote:
> Sorry, I forgot to add the most important part :)
>
> What might be happening is that you have a default value of nil (NULL)
> which is then changed to an empty string "". Because the browser sends
> a value because of the gotcha workaround.
>
> So the easiest solution would be to have a default value for the field.
> Which is something you want to have anyways for a boolean field IMO.
>
> - Eloy
>
> On Jan 12, 2009, at 5:14 PM, Eloy Duran wrote:
>
> > Hi,
>
> > This was probably because you used the check_box helper, which makes  
> > sure the browser always sends a value.
> > See the documentation for the check_box helper:
>
> > === Gotcha
>
> > The HTML specification says unchecked check boxes are not  
> > successful, and thus web browsers do not send them. Unfortunately  
> > this introduces a gotcha: if an Invoice model has a paid flag, and  
> > in the form that edits a paid invoice the user unchecks its check  
> > box, no paid parameter is sent. So, any mass-assignment idiom like
> > �[email protected]_attributes(params[:invoice])
> > wouldn’t update the flag.
> > To prevent this the helper generates a hidden field with the same  
> > name as the checkbox after the very check box. So, the client either  
> > sends only the hidden field (representing the check box is  
> > unchecked), or both fields. Since the HTML specification says key/
> > value pairs have to be sent in the same order they appear in the  
> > form and Rails parameters extraction always gets the first  
> > occurrence of any given key, that works in ordinary forms.
>
> > - Eloy
>
> > On Jan 12, 2009, at 5:05 PM, Antoine wrote:
>
> >> Dear all,
>
> >> Maybe i wasn't so clear, excuse me for my english ;-)
>
> >> My problem is simple ..
> >> I didn't change the value of my checkboxes in my form but the core
> >> function of rails was saying that the values currently change ! and
> >> that's why rails update the values in mysql... and also return a  
> >> wrong
> >> information if i use the new fontions like : attributes_change,
> >> attribute_changed?...
>
> >> I don't understand why ?
>
> >> thank you for your help !
> >> Antoine
>
> >> On Jan 8, 3:39 pm, Antoine <[email protected]> wrote:
> >>> Dear all,
>
> >>> I get a stupid bug and i don't know if there is something wrong in
> >>> rails or if it is me doing a stupid thing.
>
> >>> I have a checkbox called (ass_tg) in my form and when i saved my
> >>> form , i write in my model:
>
> >>>  before_save :test
>
> >>>  def test
> >>>    puts "-----------------------"
> >>>    puts ass_tg_change
> >>>    puts "-------------------------"
> >>>  end
>
> >>> I should have a nil answer but I get  in my console :
>
> >>> -----------------------
> >>> 0
> >>> 0
> >>> -------------------------
>
> >>> And I have this attributes save in the SQL log ..(I didn't change  
> >>> the
> >>> status of the checkbox ...)
>
> >>> UPDATE `companies` SET .... `ass_tg` = 0,...... WHERE `....
>
> >>> It seems like rails don't like integer attributes equal to 0 when it
> >>> execute all the change functions  (change, changed?, was ...) ??
>
> >>> Best regards,
>
> >>> Thank you for your help,
> >>> Antoine
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to