Cześć, po co pisać:
class WelcomeController < ApplicationController
def index
@jewelries = Jewelry.newest
end
end
Skoro w widoku można skorzystać bezpośrednio z metod modelu:
<%= render :partial => "jewelry/list", :object => Jewelry.newest %>
A nie:
<%= render :partial => "jewelry/list", :object => @jewelries %>
Rozumiem, że jeżeli z tego modelu chcę korzystać kilkukrotnie na jednej odsłonie to się opłaca, bo nie odpytuję źrdóła danych kilkukrotnie, a jeżeli tylko raz - to czemu? Taka konwencja?
Elastyczność: jeśli zamarzy Ci się jednak wyświetlać inny zestaw danych niż Jewelry.newest (albo np. go paginować czy ogólnie zmieniać wywołanie metod modelu), będziesz musiała się przeczołgać przez wszystkie odwołania do tego widoku
Styl: widok powinien być “głupi” i korzystać wyłącznie z danych mu przekazanych przez inne warstwy (tutaj: kontroler)
Debugging: bo debugując jeśli widzisz, że masz nie te dane których potrzebowałaś, łatwiej debugować wiedząc że należy szukać przyczyny w kontrolerach
Ja bym jeszcze dodał, że wyjątki z widoków nie są domyślnie przełapywane. W powyższym przykładzie to nie ma znaczenia, ale jak się wstawi w widoku: Jewerly.find(params[:id]) i takiego rekordu nie będzie w bazie, to dostaniesz błąd 500 zamiast 404.