Witam
Próbuje napisać sklep, dotarłem do momentu w którym próbuje utworzyć koszyk.
Mam trzy modele:
Produckt > nazwa, opis produktu,
Option > nawa opcji np.: “Kolor”
Suboption > “biały, czerwony…”.
Całość zarządzam jednym formularzem za pomocą accepts_nested_attributes_for + javascript. Na stronie produktu subopcje wyświetlam za pomocą Select.
Co chciałbym osiągnąć?
Na stronie produktu przycisk “Dodaj do koszyka”, który zapisze nie tylko id produktu ale także wybrane przez klienta subopcje, w dodatku w momencie przejścia do koszyka chciałbym by klient miał możliwość ponownej edycji subopcji danego produktu, ponieważ opcje produktu będą dość poważnie rozbudowane.
Myślę żeby utworzyć nowy model, nie będzie on powiązany z bazą danych (zamówień nie zamierzam trzymać w bazie, od razu polecą emailem) i w nim będę trzymać obiekty z koszyka, id produktu, id opcji i powiązanej z nią id subopcji. Czy to sensowy kierunek?
Póki co walczę z przyciskiem, ale zwątpiłem czy ten kierunek mam sens, czy nie wymyślono sensowniejszego rozwiązania.
Z tymi zamówieniami, to trochę przesadziłem, chodzi o wycenę, nie będzie cen na stronie, zamiany zamówienia i zwroty nie wchodzą w rachubę, nie będzie nawet możliwości zakładania kont przez użytkowników. Może niepotrzebnie napisałem “sklep” bo to de fakto sklepem nie będzie, bardziej pierwszy krok w kontakcie z klientem, zapytanie ofertowe ze strony a później kontakt osobisty.
Aktualnie zrobiłem tak że na stronie produktu mam formularz którego Submit przekierowuje do akcji w której obrabiam sobie tablice params i całość planuje trzymać w sesji, dodając kolejne pozycje i na podstawie tego zbudować formularz podsumowania “zamówienia”.
Może pomysł który sugerujecie byłby lepszy, ale nie mogę tego ogarnąć logicznie, tzn. jak właśnie zrobić tą “zwyczajną edycję zwyczajnych modeli”.
Czy chodzi o stworzeni kopii produktu + jakiś znacznik że to element koszyka a nie zwykłej oferty, a w sesji użytkownika trzymać tylko id tych “nowych” produktów?
Kurcze, czasami mam wrażenie że brakuje mi jakiś podstaw, albo abstrakcyjnego myślenia
Niestety, Olek, pozamiatałeś.
No chyba że kolega woli bardziej praktyczne wejście w temat, to wtedy w Agile Web Development With Rails jest przeczołganie właśnie przez tworzenie sklepu internetowego.
Mówię poważnie. AWDWR jest fajną książką (ja z nią zaczynałem) i bez problemu załapałem dzięki niej jak działa zwyczajna edycja zwyczajnych modeli. Tyle że wcześniej miałem świetny wykład z relacyjnych baz danych i wymagające laborki na których do bólu tłukliśmy diagramy ER.
Czasami pojawiają się ludzie (nie tylko na forum), którym takich podstaw brakuje i powoduje to dziwne problemy w stylu: tabela z 90 kolumnami (bo model może mieć wiele załączników) zamiast prostego has_many. Dlatego na poważnie pytam o jakiś sensowny artykuł pod tytułem: “Co to jest 3-cia postać normalna i jak z niej korzystać.”, bo to od tego trzeba zacząć.
Z reguły jestem pełen buddyjskiego współczucia, ale tym razem otwieram popcorn i z nieukrywaną szadenfrajdą będę obserwował jak podejście “nie mam czasu na naukę, muszę robić” gryzie kolejną osobę w dupala.
Ależ ja zrobiłem to według Rayana, wręcz identycznie, tylko nazwy się u mnie zmieniły survey=>product, question=>option, answer=>suboption. Tylko że to się tyczy utworzenia obiektu.
Problem u mnie jest z wyświetleniem tego po stronie użytkownika, jak wyświetlić wartość z pola option.name jako label dla pola select (lista subopcji) w fields_for?
Może ktoś ma dla kolegi lepsze materiały?[/quote]
Skoro kolega taki zabiegany, to zawsze można mu jakiś kondensat zarzucić - niezbędne minimum: 1, 2, 3 i 4, które serwuje moim studentom