Layout, partial i dane z dwóch źródeł

To mój pierwszy post - serdecznie witam forumowiczów!

Moja przygoda z RoR zaczęła się stosunkowo niedawno, odpowiedzi na większość pytań byłem w stanie znaleźć w googlach. Teraz pytanie jest ciut zbyt ogólne jak na możliwości wyszukiwarek.

Aplikację, którą tworzę, chcę wyposażyć w “panele” - takie HTMLowe szablony wyświetlające ramki, podziały, cienie, etc. Panel ma składać się dwóch obszarów: dane i akcje. Miałby służyć do wielokrotnego wykorzystania dla różnych encji w aplikacji.

Konstrukcja, której poszukuje (partial/wrapper/???), miała by przyjmować dwa strumienie kodu generującego zawartość z danymi i linkami do akcji.

Mniej więcej wyobrażam sobie, że mogło by to być coś w stylu:

app/views/particular_entities/_panel.html.erb

<% render with_layout %>
	<% part :data %>
		....
		....
	<% end %>

	<% part :actions %>
		....
		....
	<% end %>
<% end %>

Prośba o wskazanie jak można by podejść do tematu, co powinienem doczytać, tak żeby zrobić to w prosty, elegancki, railsowy sposób :slight_smile:

Pozdrawiam,
Radek

Nie wiem czy dobrze zrozumiałem, ale jeśli tak, to:

Robisz sobie partiale do wyświetlania ich rzeczy i używasz sobie ich w widokach w których chcesz.

W danym kontrolerze, czy szerzej w kontrolerze aplikacji jak paneli używasz wszędzie, piszesz metody które zapewniają dane do tych partiali.

Następnie dla danych akcji które używają partiali dajesz before_filter odpalające te metody.

Ależ bełkot. Możesz napisać bardziej po ludzku napisać o co Ci chodzi? :slight_smile:

Na pewno interesuje Cię parametr :locals wywołania render :partial – zobacz w dokumentacji.

Ależ bełkot. Możesz napisać bardziej po ludzku napisać o co Ci chodzi? :)[/quote]
Spróbuje :slight_smile: To był rzeczywiście duży skrót myślowy :wink:

Mój tok myślenia był następujący:

chcę stworzyć w aplikacji spójne graficzne elementy prezentujące dane różnych encji. W dużym uproszczeniu tak mógłby wyglądać partial tworzący “panel” dla jednej encji:

<%= h entity.name ... %> <%= h entity.description ... %>
<%= link_to tamto ... %> <%= link_to siamto ... %>

Jako, że nie chciałbym w każdym partialu powtarzać tych wszystkich DIVów (będzie ich pewnie znacznie więcej), pomyślałem że dobrze by je przenieść do specjalnego layotu wykorzystywanego tylko przez moje partiale / panele. Tu pojawia się luka w wiedzy. Wyczytałem o opcji :layout przy render :partial ale trzeba by jakoś nauczyć layout i później partiale pracować w dwoma yield’ami ???

layout:

<%= yield %>

I o to mi generalnie chodziło pisząć o tych “strumieniach kodu…” :wink: A być może mój pomysł jest głupi i to jest ślepa uliczka.

Pozdrawiam,
Radek

Przyjrzyj się metodzie “content_for”.

Wielkie dzięki! Dokładnie o to chodziło.

Pozdrawiam,
Radek