Forum: Rails Germany Hash Problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Sven B. (Guest)
on 2009-01-04 23:12
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
Nicolai R. (Guest)
on 2009-01-04 23:15
(Received via mailing list)
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
Sven B. (Guest)
on 2009-01-04 23:24
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 :).
Michael K. (Guest)
on 2009-01-04 23:27
(Received via mailing list)
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:
This topic is locked and can not be replied to.