Ruby 使用.next递增字母

Ruby 使用.next递增字母,ruby,ruby-on-rails-3,gmaps4rails,Ruby,Ruby On Rails 3,Gmaps4rails,很酷的东西。所以这是可行的。它循环执行do循环,并递增字母。问题是,它从B开始。我试着在图片中只使用letter,然后在最后使用letter.next,甚至字母=字母。下一步,但gmaps向我抛出了一个错误 除了“a”之外,还有什么方法可以给字母赋值吗?这个呢 def home letter = 'A' @markers = Location.all.to_gmaps4rails do |loc, marker| marker.infowindow render_to_strin

很酷的东西。所以这是可行的。它循环执行
do循环
,并递增字母。问题是,它从B开始。我试着在图片中只使用
letter
,然后在最后使用
letter.next,甚至
字母=字母。下一步
,但gmaps向我抛出了一个错误

除了“a”之外,还有什么方法可以给
字母
赋值吗?

这个呢

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
你会喜欢这个:)


检查
'@ABCD'.codepoints.to_a
以查看魔法。

从技术上讲,
'@'
'a'
的前身,因为
'@'
的ASCII值是64,
'a'
的值是65。注意:

letter = '@'
letter.next! #=> "A"
从这个意义上说:

'A'.codepoints.first
#=> 65

'A'.codepoints.first - 1
#=> 64

('A'.codepoints.first - 1).chr
#=> "@"

('A'.codepoints.first - 1).chr.next
#=> "A"
但我强烈反对使用黑魔法™. 在实际代码中使用类似@nicooga的方法

'A'.codepoints.first
#=> 65

'A'.codepoints.first - 1
#=> 64

('A'.codepoints.first - 1).chr
#=> "@"

('A'.codepoints.first - 1).chr.next
#=> "A"
'@'.next == 'A'
#=> true