Thanks Chris!

On Oct 30, 5:24 pm, Chris Corbyn <[email protected]> wrote:
> Ah, I guess integer indexed parameters are already in Array format.  Try 
> dropping the #values part here:
>
>  a.word.split("").zip(params[:letter]).each_with_index do |…|
>
> We should take this discussion to 
> stackoverflow.comhttp://stackoverflow.com/questions/tagged/ruby
>
> On 31/10/2011, at 4:30 AM, Robin Reid wrote:
>
>
>
>
>
>
>
> > thank you Chris!
>
> > i realized, after posting that this needed to be in the Sinatra forum,
> > but you responded so that is good!
>
> > I am still very new to RUBY and coding in general....so i am doing
> > things the long way. It seems here that you have condensed five lines
> > into one line?  That's amazing...
>
> > I replaced my for loop, and
>
> > my comparison line :
>
> > lettername = 'letter' + String(i)
> > lettername = lettername.to_sym
>
> > if(params[lettername] == letter)
> >   lettername = letter
>
> > with:
> >  a.word.split("").zip(params[:letter].values).each_with_index do |
> > (expected, got), idx|
> >    output += "<input type='text' name ='letter[#{i}]'
> > value='#{expected == got ? expected : ''}' size='1'/>"
> >  end
>
> > But I must be missing something. I am getting an error message that
> > says it doesn't recognize "value"...
>
> > Thanks a million for taking the time out to answer me...so much
> > appreciated.
>
> > Best,
>
> > Robin
> > On Oct 29, 8:16 pm, Chris Corbyn <[email protected]> wrote:
> >> Hi Robin,
>
> >> This is quite unrelated to DataMapper and more related to programming in 
> >> general.  I'll answer anyway.
>
> >> I'm not sure if you want critique on the code itself, but it struck me 
> >> when I opened that gist just how un-ruby-esque the code is.  I looks like 
> >> JavaScript or something at a first glance.
>
> >> For example, creating markup with:
>
> >>   form = ''
> >>   form += '<form … >'
> >>   form += '<input …>'
> >>   form += ' …. '
> >>   form += '</form>'
>
> >> Is needlessly verbose and hard to read.  Side-stepping the fact that 
> >> Sinatra allows you to use template engines like ERB or HAML, you can 
> >> immediately improve the current code simply by replacing the repeated 
> >> concatenation with here-doc:
>
> >>   form = <<-HTML
> >>     <form … >
> >>       <input …. >
> >>       …..
> >>     </form>
> >>   HTML
>
> >> Also, in ruby, using for-loops is generally avoided in favour of #each:
>
> >>   for letter in a.word.split("")
> >>     output +="<input type='text' name ='letter[#{i}]' value='' size='1'/>"
> >>     i = i+1
> >>   end
>
> >> Becomes
>
> >>   a.word.split("").each do |letter|
> >>     output +="<input type='text' name ='letter[#{i}]' value='' size='1'/>"
> >>     i = i+1
> >>   end
>
> >> You can also remove the need for the temporary variable 'i' by using a 
> >> more appropriate iterator method:
>
> >>   a.word.split("").each_with_index do |letter, i|
> >>     output +="<input type='text' name ='letter[#{i}]' value='' size='1'/>"
> >>   end
>
> >> With the for loop removed and us now looking at what methods ruby offers 
> >> for working with its data structures, I *think* the logic you're looking 
> >> for is a letter-by-letter comparison with the expected word, which #zip 
> >> lends itself to:
>
> >>   a.word.split("").zip(params[:letter].values).each_with_index do 
> >> |(expected, got), idx|
> >>     output += "<input type='text' name ='letter[#{i}]' value='#{expected 
> >> == got ? expected : ''}' size='1'/>"
> >>   end
>
> >> Regards,
>
> >> Chris
>
> >> On 30/10/2011, at 9:10 AM, Robin Reid wrote:
>
> >>> hi all,
>
> >>> i am writing a puzzle game in sinatra and using datamapper. i am
> >>> extremely stuck in the last part of my game. The game has 2 parts: 1)
> >>> someone can create a word puzzle and send it to their friends 2) that
> >>> puzzle player can try to fill it out and see if they get he correct
> >>> answer.
>
> >>> in the final step of the puzzleplayers game, he/she must fill in boxes
> >>> with the letters that they are guessing. I want to be able to compare,
> >>> immediately as they enter, if their guessed letter, matches the letter
> >>> stored by the puzzle creator. If it matches, then the input letters
> >>> will stay in the box, if they don't it will wipe out, they will have
> >>> to try again.  i don't know how to do this.
>
> >>> my code is here...if anyone is around and cares to take a crack at
> >>> helping me. I would greatly appreciate it.
>
> >>>https://gist.github.com/39bd78d70018e3438080
>
> >>> thanks!
>
> >>> robin reid
>
> >>> --
> >>> You received this message because you are subscribed to the Google Groups 
> >>> "DataMapper" 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 
> >>> athttp://groups.google.com/group/datamapper?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "DataMapper" 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 
> > athttp://groups.google.com/group/datamapper?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" 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/datamapper?hl=en.

Reply via email to