Po raz kolejny podchodzę do Rails-ów i po raz kolejny mam ten sam problem z rusztowaniami:
Utworzyłem model product
Wpisałem w pliku migracyjnym odpowiednie kolumny do migracji
Przeprowadziłem migrację
Utworzyłem kontroler admin, w którym mam wg. autora zarządzać danymi z modelu product poprzez dodanie “scaffold :product”
I teraz pytanie - Jak bez rusztowań dynamicznych przenieść zarządzanie produktem do kontrolera admin?
Kiedy tworze rusztowanie przy pomocy polecenia scaffold tworzy mi się model i kontroler o tej samej nazwie. Jak sprawić żaby do modelu product zarządzeni danymi było w kontrolerze np. admin?
Z gory uprzedzam że zdaję sobie sprawę że to pewnie głupie pytanie, ale nie mogę ogarnać tych rusztowań
Tak jak mówię - jestem totalnie zielony i nie wiem nawet gdzie zacząć szukać
A jaką książkę proponujesz? Bo nie mogę znaleźć aktualnej lektury z opisem nowych rusztowań, a zawiesiłem się na tym i już 4 raz podchodzę (co miesiąc robię jedną próbę).
I to serio - to serio serio? Bo wiem, że jestem leszcz, Rubiego się uczę, ale to mój pierwszy język programowania i raczej takie pisanie kodu może być ciężkie… A raczej spotkam więcej przeszkód, niż gdy prowadzi mnie nieaktualny podręcznik…
OK. Wygenerowałem kontroler store i dałem mu dziedziczenie po kontrolerze Products, dzięki czemu uzyskałem dostęp do metod kontrolera Products i wyświetliłem tylko widok danych z bazy bez możliwości edycji.
Pytanie weryfikujące - czy tak można robić? A raczej czy nalezy to do bezpiecznych sposobów tworzenia aplikacji?
@Tomash- często czytam Twoje posty, i to, co mnie w nich czasem boli, to brak argumentacji
możesz uargumentować? ja korzystam ze standardowego scaffoldu, który potem odpowiednio tuninguje, i wygląda bardzo przyzwoicie - jak nie wierzysz, mogę kiedyś pochwalić się screenami @fudek - nie bardzo wiem, czym są te magiczne “rusztowania” (chyba, że mówisz o scaffoldzie )
zakładając, że nie masz railsów z czasów kamienia łupanego, w konsoli klepiesz:
script/generate scaffold nazwa_modelu [parametry]
gdzie parametry to odpowiedni pola dla Twojego modelu. przykład:
script/generate scaffold site title:string permalink:string body:text published:boolean
następnie zrób sobie kontroller admin - niech dziedziczy po kontrolerze application. A wszystkie generowane przez Ciebie scaffoldy niech dziedziczą po kontrollerze admin, a nie po application
To z reguły jest argumentacja, której wolałbyś nie czytać i dlatego ją pomijam
Znaczy rozumiem Cię, bo też zaczynałem od scaffoldów (szybko porzuciłem, ale mniejsza o to) no i są takie uber-cool na tych wszystkich screencastach, ale popatrz ile się grzebiesz z tymi generatorami. Robiąc copypastę kodu z istniejących/posiadanych/widzianych_na_sieci formularzy miałbyś już to wszystko z głowy.
AWDWR 2nd ed. nadaje się do wyrzucenia, bo
a Railsy po 1.2 nie bez powodu zmieniły numerek na 2.0 – naprawdę sporo się pozmieniało, wyleciało lub sie mocno zmieniło. Próba uczenia się z książki o Railsach 1.2 podczas pisania w Railsach 2.x to strata czasu i nerwów. Albo kupa, albo won z nocnika – możesz sobie zainstalować RoR 1.2.6 albo zmienić książkę na nowsze wydanie.
A zmianę książki polecam w tym wypadku dlatego, że też od AWDWR zaczynałem i po trafieniu “do zawodu” przez dobre trzy miesiące odkręcałem złe praktyki i nawyki, jakie ta książka sprzedaje.
@krzyzak - Super, dzięki za info, że moge tak się bawić dziedziczeniem bez obawy, że nieświadomie robię najgorsza rzecz jaka może istnieć Jeżeli chodzi o te rusztowania to tak - jest to ponoć polska nazwa scaffoldu => tak z książki wywnioskowałem
@Tomash - książkę już wyrzuciłem Scaffold nadal będę chyba stosował Męczę/Bawię się dalej z Railsami.
copypaste + zmiana nazw modeli na prawidłowe. a i tak w efekcie uzyskałbym kod b. podobny do tego wygenerowanego przez scaffoldy (widoki tylko zmieniam conieco, na potrzeby przemielenia go do postaci flexigrida )
tak naprawdę nie wiem, czy to jest “be” - wiem, że działa i to dobrze- wszystko, co jest od panelu admina trzymam w podfolderze admin, dziedziczy po admin controller, co implikuje kilka waznych dla mnie rzeczy:
całą logikę autoryzacji trzymam w kontrolerze admina, więc te dziedziczące po nim nie są skażone tym kodem ;p
widoki dziedziczą po layoucie admin, a nie application, więc za darmo mam layout panelu admina gotowy