Witam,
Problem: mam kolekcje typu Array, której elementami są kolekcje typu Hash
Szybka metoda, żeby zobrazować o co mi chodzi:
[code=ruby]class Profile < ActiveRecord::Base
serialize :content
belongs_to :user
def put_default_content
self.content = Array.new
self.content << { :category => “O mnie”, :content => “Użytkownik nie napisał jeszcze nic o sobie” }
self.content << { :category => “Dane kontaktowe”, :content => “Użytkownik nie podał żadnych danych kontaktowych” }
self.content << { :category => “Moje pasje”, :content => “Użytkownik nie napisał jeszcze nic o swoich pasjach” }
end
end[/code]
Chce to teraz wyswietlic przy pomocy partiala:
# @profile_content to kolekcja stworzona przy pomocy put_default_content
<%= render( :partial => "user/profile/profile_content", :collection => @profile_content ) %>
No i niestety muszę się przyznać, że to banalne zadanie mnie przerasta, widać jeszcze nie jestem obeznany z Ruby w odpowiednim stopniu
Próbuje coś takiego, ale niestety nie działa:
_profil_content.rhtml:
[code=rhtml]
<%=h profile_content[‘category’]%>
<%= profile_content['content']%>
[/code] Dostaje komunikat: "can't convert String into Integer", comnie dziwi, bo przecież Ruby przekazuje kolejno elementy tablicy @profile_content do partiala? Chyba przeoczyłem jakąś oczywistą rzecz, wytknijcie mi tylko jaką ;)EDIT:
Dobra, doszedłem do tego ze cos sie pieprzy z serializacja do YAML’a - jesli ktos sie tym bawił, to prosze o odpowiedz na pytanie: w jaki sposob z lancucha znakow ze zserializowanym do YAML obiektem Ruby uzyskac z powrotem ten obiekt ??
robie tak:
@profile_contents = YAML::parse( @profile.content ).transform
I nic ! w @profile_contents zamiast obiektu natywnego Ruby mam jakis YAMLowy syf…
