Hash Problem


#1

Hi an alle,

ich habe momentan ein Problem mit einem Hash, den ich so definiere:

items = { :home_index => root_path,
:users_profile => user_profile_path(current_user.id),
:frontpage_index => root_path,
:friends_index => friends_path,
:messages_index => messages_path,
:session_logout => logout_path }

was auch ganz genau der Reihenfolge entspricht in der ich sie mit .each
abrufen möchte. Wenn allerdings der Hash definiert ist und ich ein
items.inspect durchführe, kommt diese Reihenfolge raus:

{
:messages_index=>"/messages",
:session_logout=>"/logout",
:home_index=>"/",
:users_profile=>"/users/1/profile",
:frontpage_index=>"/",
:friends_index=>"/friends" }

Das ganze findet im ApplicationHelper statt und wird im View aufgerufen,
ich versteh leider nicht, warum er sortiert und wie…

Ich hoffe mir kann einer von euch helfen!

Mit freundlichen Grüßen

Sven


#2

Hallo Sven,

für einen Hash garantiert Ruby 1.8.x nicht die Einhaltung der
Einfügereihenfolge. Wenn Du auf eine bestimmte Sequenz angewiesen bist,
musst Du es mit einem Array realisieren. Erst Ruby 1.9.x garantiert auch
bei
einem Hash die Einfügereihenfolge.

Grüße

Nicolai


#3

Danke Nicolai,

endlich hat diese nerviges Problem ein Ende :). Zwar nicht wirklich
zufriedenstellend das ganze nun über einen Array zu erledigen, aber die
Erkentniss bringt mich ja nun auch etwas vorran :).


#4

Hallo Sven,

wenn die Reihenfolge erhalten bleiben soll, dann kann man orderedhash
verwenden.

gem install orderedhash

OrderedHash wird genauso verwendet wie ein normaler ungeordneter Hash.

Viele
Grüße
Michael K.

Sven Büttner schrieb: