Incrementing letters using .next
gmaps4rails, ruby, ruby-on-rails-3
Solution
This works, but I'll second @patrick-oscity in that it is arguably obscure:
letter = '@'
letter.next! #=> "A"
Another solution is mutating the letter at the end of the loop, after using it.
This snippet:
letter = 'A'
1.upto(5) do
puts letter
letter.next!
end
... produces this output:
A
B
C
D
E
Problem
``` def home letter = 'A' @markers = Location.all.to_gmaps4rails do |loc, marker| marker.infowindow render_to_string(partial: '/locations/info', locals: {object: loc}) marker.picture({picture: "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=#{letter.next!}|9966FF|000000", width: 32, height: 32, shadow_picture: "http://chart.apis.google.com/chart?chst=d_map_pin_shadow", shadow_width: 110, shadow_height: 110, shadow_anchor: [17,36]}) marker.title "Title - #{loc.name}" marker.sidebar render_to_string(partial: '/locations/sidebar', locals: {object: loc}) marker.json({id: loc.id}) end end ``` Cool stuff. So this works. It cycles through the `do loop` and increments the letter. Problem is, it starts at B. I tried using just `letter` in the picture, then at the end using `letter.next!`, and even `letter = letter.next`, but gmaps throws an error at me. Is there a way to assign something besides 'A' to `letter`?