Partial problem z wysweitleniem

Więc mam takie zapytanie.

Rzecz w tym, że mam kontroler i widok w którym poprzez pętle jest wyświetlanych kilka rekordów z bazy. Wyświetlane jest to w akcji index.html.erb.

Mam również drugi kontroler i widok w który również wyświetlam akcje i na końcu tego chcę wyświetlić widok z tego opisywanego powyżej index.html.erb.

utworzyłem więc plik _report.html.erb, który odpowiada nazwie tego kontrolera ‘źródłowego’, a w nim:

<%= report %> <%= yield %>
niby błędu żadnego nie pokazuje, ale też nic z tego partiala nie wyswietla :frowning:

Aby wyświetlić partiala użyj:

<%= render :partial => 'report' %>

W ten sposób w templejcie wyświetlasz partial _report.html znajdujący się w tym samym katalogu.
W twoim przypadku jeśli chcesz wyświetlić listę obiektów w akcji A i w akcji B, i jest to ta sama lista to robisz tak:

  1. Tworzysz partial, np. _report.html.erb - w nim wyświetlasz rekordy
  2. W templejcie akcji A piszesz <%= render :partial => ‘report’ %>
  3. W templejcie akcji B piszesz <%= render :partial => ‘report’ %>

Do partiala możesz też przekazać zmienne które będą lokalne w obrębie partiala, np.

<%= render :partial => ‘report’, :locals => {:my_object_list => @items} %>

Więcej informacji znajdziesz w dokumentacji do render.


Ogłoszenia mieszkaniowe

tak, ale jeżeli ten widok częściowy ma wyświetlać zapytania z bazy to już nieco komplikuje moje próby zrozumienia tego. Bo wtedy w tym widoku częściowym _report.html.erb muszę zawrzeć ??? np.

[code=ruby]@report = tables.find(:all, :order => [“id DESC”], :limit => 7 )

<% for report in @report %>

<%=h report.name %>


<% end %>[/code]
a w pliku index.html.erb wczytuje każdą zmienną osobno ?

[quote=tpl]@report = tables.find(:all, :order => ["id DESC"], :limit => 7 )
[/quote]
A fuj - Takie rzeczy powinny ladowac w kontrolerze a nie widoku - mam nadzieje ze podales to w ten sposob dla jasnosci :wink:

Pozdrawiam
Pawel

[quote=ruthrsc][quote=tpl]@report = tables.find(:all, :order => ["id DESC"], :limit => 7 )
[/quote]
A fuj - Takie rzeczy powinny ladowac w kontrolerze a nie widoku - mam nadzieje ze podales to w ten sposob dla jasnosci :wink:

Pozdrawiam
Pawel[/quote]
no właśnie tego nie rozumiem, bo jak widok częściowy pobierze to co wyżej z kontrolera. Dla widoku częściowego też się tworzy kontroler ?

Nie.

W kontrolerze umieszczasz

@report = tables.find(:all, :order => ["id DESC"], :limit => 7 )

a w widoku

<%= render :partial => 'report', :locals => {:report => @report} %>

i w ten oto sposob masz przekazana zmienna @report do partiala( _report.html.erb ) i dostepna pod nazwa report, np.:

[code=ruby]<% report.each do |r| %>

<%=h r.name %> <% end %>[/code]

Dzieki zadziałało.