ruby-on-rails - 为什么heroku改变了哈希的顺序?

ruby-on-rails - 为什么heroku改变了哈希的顺序?,第1张

对于我的生活我无法理解这一点。

如果我在我的本地开发/制作中有这个:

fields = {:name => {...},:description => {...},:amount => {....}}

它很好我循环我的哈希并打印字段名称就像我宣布的那样。

heroku中,序列的打印顺序不同?我完全不知道为什么,我无法弄清楚为什么heroku以不同的顺序打印它们。

这有意义吗?

编辑:OMG让我疯狂。我实际上是在我的模板中进行此操作,对我的变量进行排序但是对于一些非常奇怪的原因,它仍然以heroku只能理解的方式出现。

- @form_columns = @form_columns.sort_by do |i| 
  - if i[1][:rank].nil?
    - i[1][:rank] = rank
  - i[1][:rank]  
  - rank = rank   1 

这就是我顺便循环的方式:

  • @ form_columns.each do | column_name |

请理解我的本地生产/开发服务器没有问题。

最佳答案:

2 个答案:

答案 0 :(得分:2)

Hash中的键的顺序不能保证等于插入的顺序,在Ruby 1.8中

在Ruby 1.9中,这种行为是不同的,其中保留了订单。

http://www.igvita.com/2009/02/04/ruby-19-internals-ordered-hash/

您使用的是ruby 1.8吗?

答案 1 :(得分:2)

如果由于某种原因必须使用Ruby 1.8,那么您可以在Rails OrderedHash中使用ActiveSupport获取有序哈希。

要查看您在Heroku上使用的stack:

heroku stack

并迁移到1.9.2:

heroku stack:migrate bamboo-mri-1.9.2
本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复