Eelmises iteratsioonis, lisades RESTful Authentication, lisati teie ajaveebile autentimine, nii et ajaveebipostitusi said luua ainult volitatud kasutajad. See iteratsioon lisab ajaveebi õpetuse viimase (ja peamise) funktsiooni: kommentaarid. Kui olete selle õpetuse lõpetanud, saavad kasutajad postitada anonüümseid kommentaare blogipostitustesse ilma sisse logimata.
Kommentaaride andmebaasi tabelite ja kontrolleri loomine toimub samamoodi nagu postituste andmebaasi tabelid ja kontroller - kasutades tellingute generaatorit. Tellingute generaator loob RESTful kontrollereid, kaardistab marsruute ja loob andmebaaside migratsiooni. Kuid enne selle kasutuselevõtmist peate mõtlema, mis on kommentaar ja millised on selle andmeliikmed. Kommentaar sisaldab:
Kui olete otsustanud, millised on kommentaari andmeliikmed, saate tellingute generaatori käivitada. Pange tähele, et postituse väli on tüüpi "viited". See on eritüüp, mis genereerib ID-välja, et siduda kommentaaritabel võõra võtme kaudu postituste tabeliga.
Kui kontrollerid ja migratsioonid on loodud, saate minna edasi ja käivitada migratsiooni, käivitades db: migre rake ülesande.
Kui andmebaasi tabelid on paigas, saate alustada mudeli seadistamist. Mudelis on näiteks andmete valideerimine - nõutavate väljade olemasolu tagamiseks - ja seosed määratletavad. Kasutatakse kahte suhet.
Blogipostituses on palju kommentaare. Suhe has_many ei vaja postituste tabelis mingeid erivälju, kuid kommentaaride tabelis on post_id, et linkida see postituste tabeliga. Alates Rööpad, võite öelda selliseid asju nagu @ post.comments et saada loend kommentaariobjektidest, mis kuuluvad objekti @post. Kommentaarid on ka sõltuv nende vanema Posti objektil. Kui postitusobjekt hävitatakse, tuleks hävitada ka kõik alamkommenteerimisobjektid.
Kommentaar kuulub postiobjektile. Kommentaari saab seostada ainult ühe ajaveebipostitusega. Suhe kuulub__ nõuab ainult ühte post_id-välja, et see oleks kommentaaride tabelis. Kommentaari vanema postitusobjektile juurdepääsemiseks võite öelda midagi sellist @ kommentaarpostitus aastal Rails.
Järgnevad on postituse ja kommentaari mudelid. Kommentaarimudelile on lisatud mitu kinnitust, et kasutajad täidaksid nõutavad väljad. Pange tähele ka suhteid has_many ja pieder_.
Kommentaaride kontrollerit ei kasutata traditsioonilisel viisil kui RESTful kontrollerit. Esiteks pääseb sellele juurde ainult postituse vaadetest. Kommentaaride vormid ja kuvamine on täielikult postkontrolleri näitamistoimingutes. Alustuseks kustutage kogu rakendus / vaated / kommentaarid kõigi kommentaarivaadete kustutamiseks kataloog. Neid pole vaja.
Järgmisena peate kustutama mõned toimingud kommentaaride kontrollerist. Vaja on ainult luua ja hävitama toimingud. Kõiki muid toiminguid saab kustutada. Kuna kommentaaride kontroller on nüüd lihtsalt vaadeteta tükk, peate muutma kontrolleri mõnda kohta, kus see üritab suunata kommentaaride kontrollerile. Kõikjal, kus on ümbersuunamise_kõne, muutke see suunata ümber (@ kommentaarpostitus). Allpool on täielik kommentaaride kontroller.
Üks viimaseid paiku, mis tuleb paika panna, on kommentaaride vorm, mis on tegelikult üsna lihtne ülesanne. Põhimõtteliselt on vaja teha kahte asja: looge uus kommentaariobjekt postituste kontrolleri kuvamistoimingus ja kuvage vorm, mis allub kommentaaride kontrolleri loomistoimingule. Selleks muutke postituste kontrolleris kuvatavat toimingut järgmiselt. Lisatud rida on paksus kirjas.
Viimane samm on reaalajas kuvamine kommentaarid. Kasutaja sisestusandmete kuvamisel tuleb olla ettevaatlik, kuna kasutaja võib proovida sisestada HTML-silte, mis võivad lehte häirida. Selle vältimiseks h kasutatakse meetodit. See meetod pääseb HTML-siltidest, mida kasutaja proovib sisestada. Edasise iteratsiooni korral võiks kasutada märgistuskeelt nagu RedCloth või filtreerimismeetodit, mis võimaldab kasutajatel postitada teatud HTML-silte.
Kommentaarid kuvatakse osaliselt, täpselt nagu postitused. Looge fail nimega rakendus / vaated / postitused / _kommentaar.html.erb ja asetage sellesse järgmine tekst. See kuvab kommentaari ja kui kasutaja on sisse logitud ja saab kommentaari kustutada, kuvatakse kommentaari hävitamiseks ka link Destroy.
Lõpuks, et kuvada kõik postituse kommentaarid korraga, helistage kommentaaride osaliseks koos : kollektsioon => @ post.comments. See nimetab kommentaarid osaliseks iga postitusele kuuluva kommentaari osas. Lisage järgmine rida postituse kontrolleri kuvamisvaatesse.
Järgmises juhendaja iteratsioonis asendatakse simple_format keerukama vormingumootoriga, mille nimi on RedCloth. RedCloth võimaldab kasutajatel luua hõlpsa märgistusega sisu, näiteks * paksus * paksus kirjas ja _italic_ kaldkirjas. See on kättesaadav nii ajaveebi postitajatele kui ka kommentaatoritele.