Witam,
Staram się przerabiac Pragmatic Bookshelf Agile Web Development with Rails i budując aplikacje krok po kroku pojawiają się w mojej głowie pytania które chciałbym zadać szanownym forumowiczom. Aplikacja prezentowana w tej książce to jak wiadomo sklep internetowy jako że sama w sobie jest bardzo prosta postanowiłem ją troszkę rozbudować. Propozycja autorów to stworzenie kontrolera store który jest można powiedziec kręgosłupem aplikacji. I teraz powiedzmy jesli chciałbym stworzyć metode która przybliżała by mi bardziej każdą pozycję musze stworzyć nową metodę powiedzmy show_item w kontrolerze store czy może show w kontrolerze klasy product? Powiedzmy że naklepałem kawałek kodu jeśli chodzi o to czy działa to działa i wszystko wykonuje poprawie ale chodzi o semantyke. Czy takie coś przechodzi w rails czy musze jeszcze wiele wiele doczytać?
Tree sobie już zbudujesz po stronie widoku. Jeśli model Category ma mixin acts_as_tree, to możesz się spokojnie w widoku przy iteracjach odwoływać do metod typu children.
Nie rób include’a w find, bo wyciągasz i tak wszystkie kategorie.
Jeśli Product belongs_to :manufacturer, to wystarczy w widoku: @product.manufacturer <- zwraca obiekt klasy Manufacturer
(btw, Producer jest nazwą trochę bardziej intuicyjną, krótszą i logiczną )
Nie wiem, Expilo, jakie Ty chcesz zapytania w modelach definiować? Skoro ActiveRecord daje już wszystko, czego kolega na tym etapie potrzebuje?
BTW, Sh - mam nadzieję, że “Agile…” 2. edycja? Bo pierwsza nadaje się na przemiał i nie wolno się z niej uczyć.
Tomash: Tak uczę się z drugiej edycji. To jak najsensowniej zrobić bym mógł generowac sobie w jakiś sposób całe drzewo kategorii i na stałe wpiąc to to szablonu strony bo to ze będą kategorie się nie zmienia. Aktualnie robię tak że do kazdego budowanego widoku dodaje linie <%= display_tree_recursive(@tree, 0) %> by takie drzewo zostało wyświetlone to jest droga na około ale nie mam innego pomysłu jak to zrobić.
Wystarczy że złapiesz kategorie główne (parent_id=0 albo parent_id=null, nie wiem jak sobie wymyśliłeś w bazie tę funkcjonalność), a w widoku skorzystasz z .children.
I do wyświetlania owszem, musisz napisać własnego helpera.
Rodzą się kolejne pytania, czy takie coś ma sens i czy jest zrobione poprawnie:
Tworrze w modelach metody:
def self.a
return Description.find(:all).size
end
def self.a
return Nick.find(:all).size
end
Potem wywołuje te metody bezpośrednio w widoku poprzez Nick.a i Description.a by otrzymać liczbe Nicków w bazie i ich opisów czy to jest ok czy zrobiłem coś na około?