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.
835a81641e16e4bbb22d761b29124790?d=identicon&s=25 Sven Büttner (sarotti)
on 2009-01-04 22: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
59528506e6297141161afcde91d677c9?d=identicon&s=25 Nicolai Reuschling (codeblogger)
on 2009-01-04 22: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
835a81641e16e4bbb22d761b29124790?d=identicon&s=25 Sven Büttner (sarotti)
on 2009-01-04 22: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 :).
9e0ec2384dd80c7f2c190e02e596e15b?d=identicon&s=25 Michael Kastner (Guest)
on 2009-01-04 22: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 Kastner

Sven Büttner schrieb:
This topic is locked and can not be replied to.