On 10 Dec 2008, at 17:47, Rick wrote:
> > Thanks Frederick. Your explanation was perfect! (Now I'll work on > figuring out how to handle the problem creating the checkbox manually, > but you got me on the right path.) > > (Seriously, send my a paypal link or else I'll be getting you a gift > certificate to amazon or something:) Don't mention it, all in a day's play :-) > > > On Wed, Dec 10, 2008 at 11:27 AM, Frederick Cheung > <[EMAIL PROTECTED]> wrote: >> >> >> On 10 Dec 2008, at 15:55, Rick wrote: >> >>> >>> On Tue, Dec 9, 2008 at 4:24 PM, Frederick Cheung >>> <[EMAIL PROTECTED]> wrote: >>> >>>> Is this rails check box trickery tripping you up ? The rails check >>>> box >>>> helper creates a hidden input field with the same name (and value >>>> 0) >>>> as well as the actual check box. If you're using arrays of >>>> parameters >>>> like I think you are this can mess things up. >>> >>> In what ways does it mess things up? (I know things get screwy as I >>> posted in my original post, yet have no idea WHY the before I'm >>> seeing >>> is happening, where a new object ends up being created.) I posted >>> some >>> of the raw html here http://pastie.org/335814 >>> >> >> It all comes down to how array parameters are handled. If the >> parameters you get look like >> match[new_game_attributes][][foo]=bar >> match[new_game_attributes][][bar]=baz >> >> then you get params == {:match => {:new_game_attributes => [{:foo => >> 'bar', :bar => 'baz'}]}} >> >> if you had >> >> match[new_game_attributes][][foo]=bar >> match[new_game_attributes][][bar]=baz >> >> match[new_game_attributes][][foo]=alice >> match[new_game_attributes][][bar]=bob >> >> then you'd expect params == {:match => {:new_game_attributes => >> [{:foo >> => 'bar', :bar => 'baz'}, {:foo => 'alice', :bar => 'bob}]}} >> >> The key thing here to note is that it is the repetition of a >> parameter >> that causes rails to add a new array element. so if your checkbox is >> checked and your parameters look like >> >> match[new_game_attributes][][name]=fred >> match[new_game_attributes][][home]=0 >> match[new_game_attributes][][home]=1 >> >> then you'll get parameters like {:match => {:new_game_attributes => >> [{:name => 'fred', :home => '0'}, {:home => '1'}]}} >> ie two array elements where you only wanted one, which (as I >> understood it) was the problem you were grappling with >> >> Fred >> >> >>> but as a summary, yes the checbox field is part of an array and >>> looks like; >>> >>> <input id="match_new_game_attributes__home" >>> name="match[new_game_attributes][][home]" type="checkbox" value="1" >>> /><input name="match[new_game_attributes][][home]" type="hidden" >>> value="0" /> Yes >>> >>> <input id="match_new_game_attributes__score" >>> name="match[new_game_attributes][][score]" size="30" type="text" /> >>> >>> Even when validation fails the form returns correctly with the >>> checkbox checked that I selected and everything looks fine, except >>> an >>> entire stinkin' new match[new_game_attributes] object was created!! >>> It's driving me nuts. Why would a checkbox cause this behavior? >>> >>> I'll pay someone 15 bucks (I'd pay more, but hey, the economy:) if >>> they can help me figure it out just so I can learn. I put the little >>> app here >>> >>> http://dl-client.getdropbox.com/u/86998/hockey.zip >>> >>> just uses built in sql-lite >>> http://localhost:3000/matches select new match, (uesrname: admin >>> password: wombat) and then check one of the 'home' checkboxes and >>> notice you'll end up with an extra instance of a player game on the >>> form when validation fails. If you DO NOT check that checkbox the >>> extra instance is not created when validation fails. >>> >>>> >> >> >>> >> > > > > -- > Rick > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---