Ślad odwiedzanych stron

Witam,

Chciałem zrobić listę odwiedzanych stron przez użytkownika w postaci linków:

   Strona główna > Moja poczta > Nowa wiadomość

W tym celu napisałem metodę, do której przekazywało sie te linki w postaci klucz => wartość. Problem w tym, że są one odczytywane nie w tej kolejności co trzeba z hashmapy. Da się jakoś odczytać klucze z hashmapy w kolejności wstawiania? Albo zna ktoś lepsze rozwiązanie?

Mam ruby 1.8.6.

[code]def path(urls, options = { :class => ‘path’ }, separator = ’ » ')
links = urls.map do |key, value|
link_to key, value, :title => key.to_s
end.reverse.join(separator.to_s)

if options.empty?
  '<div>' + links + '</div>'
else
  div_options = options.map { |key, value|  key.to_s + '="' + value.to_s + '"' }.join(' ')
  '<div ' + div_options + '>' + links + '</div>'
end

end[/code]
Działa to tak:

[code] <%= path(‘Strona głowna’ => root, ‘Wiadomości’ => messages_url) %>

Strona główna >> Wiadomości[/code]

Pozdrawiam

Koncepcja: pogooglaj słowo “breadcrumbs” w kombinacjach z różnymi dodatkowymi, typu “breadcrumbs in rails”, “rails breadcrumbs” itp. itd.
Implementacja o której mówisz: OrderedHash. Jest w Railsach (w dość szczątkowej wersji i bez dokumentacji - googlaj za blogami!) jako ActiveSupport::OrderedHash, ewentualnie w Ruby Facets (Fajna biblioteka) i Ruby 1.9.

Ja robię tablicę Hashy po prostu.

tablice i do sesji z nia:D

OK, dzięki za odpowiedzi :slight_smile: