Az előző iterációban, a RESTful Authentication hozzáadásával, a hitelesítés hozzáadódott a blogjához, így csak felhatalmazott felhasználók hozhattak létre blogbejegyzéseket. Ez az iteráció hozzáteszi a blog bemutatójának utolsó (és fő) funkcióját: megjegyzéseket. Miután befejezte ezt az oktatóprogramot, a felhasználók anonim észrevételeket tehetnek a blogbejegyzésekbe bejelentkezés nélkül.
A megjegyzés adatbázis táblák és vezérlő létrehozása nagyjából ugyanúgy történik, mint a post adatbázis adatbázis táblák és vezérlő létrehozása - az állványgenerátor használatával. Az állványgenerátor RESTful vezérlőket hoz létre, térkép útvonalakat és adatbázis-vándorlásokat hoz létre. De mielőtt ezt megkezdené, gondolkodnia kell arról, hogy mi a megjegyzés és mi lesz az adatainak tagjai. A megjegyzés:
Miután eldöntötte, hogy mi a megjegyzés adatainak tagjai, futtathatja az állványgenerátort. Vegye figyelembe, hogy a feladási mező "referenciák" típusú. Ez egy speciális típus, amely azonosító mezőt hoz létre, hogy idegen kulcson keresztül összekapcsolja a megjegyzéstáblát a hozzászólásokkal.
Miután a vezérlőket és az áttelepítéseket generálta, továbbléphet és futtathatja az áttelepítést a db: migrációs rake feladat futtatásával.
Amint az adatbázis táblák a helyükön vannak, megkezdheti a modell beállítását. A modellben például az adatok érvényesítése - a szükséges mezők biztosítása érdekében - és a kapcsolatok meghatározhatók. Két kapcsolatot fogunk használni.
Egy blogbejegyzés számos hozzászólással rendelkezik. A has_man kapcsolat nem igényel külön mezőket a hozzászólások táblájában, de a megjegyzés táblában van egy post_id, hogy összekapcsolhassa a hozzászólások táblájával. Tól től sínek, mondhat olyan dolgokat, mint például @ post.comments hogy megkapja a @post objektumhoz tartozó megjegyzésobjektumok listáját. A megjegyzések is függő a szülő Post objektumán. Ha a Post objektum megsemmisül, akkor az összes gyermek kommentár objektumot is meg kell semmisíteni.
A megjegyzés hozzászólási objektumhoz tartozik. A megjegyzés csak egyetlen blogbejegyzéshez társítható. Az pieder_to kapcsolathoz csak egy post_id mező szükséges, hogy a megjegyzés táblázatban legyen. A hozzászólás szülőbejegyzésének eléréséhez mondhat valamit @ comment.post Rails-ben.
Az alábbiakban bemutatjuk a Hozzászólás és a Megjegyzés modelleket. Számos validáció került a megjegyzésmodellbe annak biztosítása érdekében, hogy a felhasználók kitöltsék a szükséges mezőket. Vegye figyelembe a has_many és a pieder_ kapcsolatokat is.
A megjegyzés vezérlőt nem fogják a hagyományos módon használni, mint a RESTful vezérlőt. Először is csak a Bejegyzés nézetekből érhető el. A megjegyzés űrlapok és a megjelenítés teljes egészében a Post vezérlő show műveletében vannak. Tehát kezdetben törölje az egészet app / views / észrevételek könyvtár az összes megjegyzés nézet törléséhez. Nincs szükségük rájuk.
Ezután törölnie kell néhány műveletet a Megjegyzések vezérlőből. Csak a következőkre van szükség teremt és elpusztítani intézkedéseket. Az összes többi művelet törölhető. Mivel a Kommentárok vezérlő most csak csonk, nézetek nélkül, meg kell változtatnia a vezérlő néhány helyét, ahol megpróbálja átirányítani a Kommentárok vezérlőre. Bárhol is van átirányítás_hívásra, váltson rá redirect_to (@ comment.post). Az alábbiakban található a teljes megjegyzés-vezérlő.
Az egyik véglegesen beépítendő elem a megjegyzéslap, amely valójában meglehetősen egyszerű feladat. Alapvetően két dolgot kell tennie: hozzon létre egy új kommentár-objektumot a hozzászólások vezérlőjének bemutató műveletében, és jelenítsen meg egy űrlapot, amely aláveti magát a megjegyzés-vezérlő létrehozási műveletének. Ehhez módosítsa a megjelenítési műveletet a hozzászólások vezérlőjén az alábbiak szerint. A hozzáadott sor félkövér betűkkel szerepel.
Az utolsó lépés a Hozzászólások. Vigyázni kell a felhasználói bemeneti adatok megjelenítésekor, mivel a felhasználó megpróbálhat HTML-címkéket beilleszteni, amelyek megzavarhatják az oldalt. Ennek megelőzése érdekében a h módszer kerül alkalmazásra. Ez a módszer elkerüli azokat a HTML-címkéket, amelyeket a felhasználó megkísérel bevinni. További iterációban egy jelölőnyelv, például RedCloth vagy egy szűrési módszer alkalmazható, hogy a felhasználók bizonyos HTML-címkéket közzétehessenek.
A megjegyzések részlegesen jelennek meg, ugyanúgy, mint a hozzászólások. Hozzon létre egy nevű fájlt app / views / hozzászólások / _comment.html.erb és tegye bele a következő szöveget. Megjeleníti a megjegyzést, és ha a felhasználó be van jelentkezve, és törölheti a megjegyzést, megjelenik a Megsemmisítés link is a megjegyzés elpusztításához.
Végül, az összes hozzászólás egyszerre történő megjelenítéséhez hívja meg a megjegyzéseket részlegesen a -nel : gyűjtemény => @ post.comments. Ez a hozzászólást részlegesnek fogja hívni minden hozzászóláshoz, amely a hozzászóláshoz tartozik. Adja hozzá a következő sort a hozzászólások vezérlőjének nézetéhez.
A következő oktatóanyag-iterációban az simple_format helyett egy összetettebb formázómotor, RedCloth néven szerepel. A RedCloth lehetővé teszi a felhasználók számára, hogy könnyű jelöléssel készítsenek tartalmat, például * félkövér * félkövér és _italic_ dőlt betűkkel. Ez elérhető lesz mind a blogbejegyzők, mind a kommentálók számára.