wytłumaczcie proszę drobny fragment kodu

Witam ponownie,
postanowiłem sprawdzić czego się do tej pory nauczyłem i próbuję samodzielnie zbudować jakąś aplikację webową, a nie bezmyślnie przepisywać z książek i tutoriali. Dodatkowo chciałem unikać scaffold’u, żeby zbyt wiele nie działo się bez mojej wiedzy (bo prawdę mówiąc scaffold generuje zbyt wiele zmian, żebym na tym etapie mógł je ogarnąć), więc zacząłem od wygenerowania controllera i paru modeli. A potem drobnymi kroczkami uzupełniałem je, żeby osiągnąć funkcjonalność jaką obserwowałem wcześniej, gdy korzystałem ze scaffoldów.

Jest tylko jeden drobny fragmencik, bez którego zdaje się nie mam dostępu z poziomu kontrolera do obiektów przetrzymywanych w bazie danych. Nie rozumiem za co on odpowiada, więc póki co bezmyślnie go kopiuję gdy zdaje sie być potrzebny. Chodzi o zawartość np. tej metody:

[code=ruby]def index
@vessels = Vessel.all

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @vessels }
end

end[/code]
Proszę, poprawcie mnie lub uzupełnijcie, jeśli myśle coś nie tak, ale: czy to jest kod odpowiedzialny za poprawnie mapowanie wiersza bazy danych na obiekt danej klasy / modelu ?

może to Ci pomoże:

http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to

respond_to … format.jakistam uzywasz jesli chcesz zeby jedna akcja mogla odpowiadac na rozne formaty. Przyklad z pdf’em 11.2. w przewodnikach http://www.apohllo.pl/guides/actioncontroller_basics.html ( dobra rzecz te przewodniki ). W twoim przypadku wiekszosc uzytkownikow zechce wyswietlic ‘vessels’ na Twojej stronie i w porzadku dostana akcje przyporzadkowana czyli index.html.erb, ale jesli chcialbys umozliwic innym serwisom pobieranie tych danych w innej wygodnej formie do obrobienia i wyswietlenia to uzywasz format.xml i renderujesz jakies tam obiekty po sformatowaniu na xml uzywajac np to_xml …

odnosnie uzywania obiektow z bazy w widokach musisz uzyc zmiennych z przedrostkiem @ i ot cala tajemnica, spokojnie mozesz pominac cale respond_to jesli nie uzywasz xml’a ^^

Dzięki, bardzo dobry link, jestem już bliżej rozkminienia całego ‘problemu’, ale jeszcze nie jestem w pełni usatysfakcjonowany. Poczytałem i sprawdziłem, że jak większość wykomentuję i zostawię:

[code=ruby] def index
@vessels = Vessel.find(:all)

respond_to do |format|

format.html # index.html.erb

format.xml { render :xml => @vessels }

end

end[/code]
to widok html nadal działa. Więc kiedy (i po co) używany jest widok w formacie xml? Można wysłać do serwera żądanie, żeby zwrócone wiersze bazy danych sformatował do xml ?

Dzięki za odpowiedź, przyszła chwilkę przed moim drugim postem :slight_smile:
Teraz już rozumiem.

Tak.
Jak dotąd się odwoływałeś przez aplikacja/scieżka albo aplikacja/scieżka.html
to spróbuj się odwołać przez
aplikacja/scieżka.xml
Railsy będą wtedy szukały szablonu o nazwie nie index.html.erb, tylko index.xml.builder (poszukaj w dokumentacji fragmentów dot. xml buildera) lub (niepolecane) index.xml.erb