Hi Sarah, Great work! B-)
Uploaded your great work to railsbridge/teachingkids. Look at `A little game (Which is correct?)` http://github.com/railsbridge/teachingkids/tree/master Congrats! :-D ashbb On Sun, May 31, 2009 at 5:16 PM, Sarah Allen <[email protected]> wrote: > Many thanks to everyone for responding to my urgent cry for help last > Thursday. I held my third and final class in the series on Friday and it > went well. I've written up my report on my blog: > > http://www.ultrasaurus.com/sarahblog/2009/05/teaching-kids-to-code-lesson-3/ > > It's almost the end of school for the year. I'm working with the school to > establish a programming class as part of the tech curriculum for future > years, since this little pilot program was such a success. > > Great work everyone! > > Sarah > > > On May 28, 2009, at 8:38 PM, Edward Heil wrote: > > Sarah, hi! Great stuff! >> >> I have some more answers for you which I'll give you in the context of a >> reply to Joel, expanding on what he says, and correcting some things where I >> think he might have misunderstood what the students were trying for -- >> >> So, replying to Joel -- >> >> On May 28, 2009, at 10:09 PM, Joel Fernandes wrote: >> >> 1. couldn't find 'url' in the shoes manual, probably what you're >>> looking for is 'link' >>> >> >> Actually, they probably do mean "url" -- as in a multiple-page app like >> this little demo: >> >> class TwoPages < Shoes >>> url '/', :mainpage >>> url '/other', :otherpage >>> >>> def mainpage >>> para "this is the main page... " >>> para link("this way to the other", :click => '/other') >>> end >>> >>> def otherpage >>> para "this is the other page... " >>> para link("this way to the main page", :click => '/') >>> end >>> end >>> >>> Shoes.app >>> >> >> This stuff is in the Nobody Knows Shoes book, p. 43. >> >> Shoes urls only work when you subclass Shoes, as I did here: >> >> class TwoPages < Shoes >>> >> >> then you can define different pages with urls and symbols and methods >> named after those symbols. >> >> When you just put stuff inside the Shoes.app block, you don't need to (and >> can't) use urls and different pages defined that way. >> >> So... to make this work they'd have to use a subclass of shoes, like this: >> >> class OurApp < Shoes >>> url '/', :index >>> [...stuff...] >>> end >>> Shoes.app # you always need this line, to make stuff happen >>> >> >> Next step -- get rid of the "index" line -- the index method gets called >> automagically because it is assigned to the url "/" in the "url" line. >> >> Third step -- as you said, the assignments of click handlers are taking >> place in a different context than the index method; they don't work together >> right at all that way. I don't know how I'd explain exactly how that works >> to the students, honestly, cause I'm a little fuzzy myself, but here's how >> I'd sum it up in a very simple rule: >> >> When you're doing the thing with the pages and URLs, you've got to put >> EVERYTHING for a page inside the method for that page ("def index...end"). >> EVERYTHING. Nothing goes outside those methods, cause those methods build >> all the pages of the app (in this case, the one page of the app, "index". >> >> So all those click handlers go inside the "def index....end". >> >> Final thing -- click handlers on buttons have to be actual code, not a >> Shoes URL, so this line won't work: >> >> button "Go Back", :click => "/" >>> >> >> You can fix it two ways. You can make it a link: >> >> para link("Go Back", :click => '/') >>> >> >> Or you can use the "visit" method to visit the URL, in a block of code >> attached to the button: >> >> button "Go Back" do >>> visit "/" >>> end >>> >> >> So a full working app with those changes -- subclass Shoes, get rid of the >> call to index(), move the click handler assignments into "def index...end" >> and fix the button so it visits the Shoes URL right -- would look like this >> -- and with those four small changes, it works great! >> >> ======================cut here=============== >> >> class OurApp < Shoes >> url '/', :index >> >> def index >> clear >> para "Which is correct?" >> stack { >> @correct = button "A bed of clams" >> @wrong1 =button "A coalition of cheetahs" >> @wrong2 =button "A gulp of swallows" >> } >> >> @correct.click { >> clear >> para "Correct" >> image " >> http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Balloons-aj.svg/550px-Balloons-aj.svg.png >> " >> button "Go Back" do >> visit "/" >> end >> >> } >> @wrong1.click { >> clear >> para "Wrong!" >> image " >> http://icanhascheezburger.files.wordpress.com/2007/05/cheez_doing_it_wrong.jpg >> " >> } >> @wrong2.click { >> clear >> para "Wrong, your consolation prize is..." >> image " >> http://farm2.static.flickr.com/1166/1230713908_083d7f6c53_o.jpg", >> :width => 500 >> } >> >> end # this is the end of the index method, which lays out the "/" page >> >> end # this is the end of the subclass, which contains all the pages (well, >> one page) >> >> Shoes.app >> >> >> ======================cut here=============== >> >> > http://www.ultrasaurus.com > > > >
