Leidžia komentuoti „Ruby on Rails“

Ankstesnėje iteracijoje, pridedant RESTful autentifikavimą, autentifikacija buvo pridėta prie jūsų tinklaraščio, kad tik įgalioti vartotojai galėtų kurti tinklaraščio įrašus. Ši iteracija pridės paskutinę (ir pagrindinę) tinklaraščio vadovėlio funkciją: komentarus. Baigę šią mokymo programą, vartotojai galės paskelbti anoniminius komentarus apie tinklaraščio įrašus neprisijungdami.

Komentarų duomenų bazės lentelės ir valdiklis kuriami panašiai kaip naudojant pastolių generatorių ir žinučių duomenų bazės lenteles bei valdiklį. Pastolių generatorius sukurs RESTful valdiklius, žemėlapių maršrutus ir duomenų bazių perkėlimus. Bet prieš pradėdami tai galvoti, kas yra komentaras ir kokie bus jo duomenys. Komentarą turi:

Kai nuspręsite, kas yra komentaro duomenų nariai, galite paleisti pastolių generatorių. Atminkite, kad įrašo laukas yra „nuorodų“ tipo. Tai yra specialus tipas, kuris sugeneruoja ID lauką, per kurį svetimas raktas susieja komentarų lentelę su įrašų lentele.

Sukūrę valdiklius ir perkėlimus, galite eiti į priekį ir vykdyti migraciją vykdydami db: migre rake užduotį.

instagram viewer

Kai duomenų bazės lentelės bus parengtos, galite pradėti modeliuoti. Šiame modelyje gali būti apibrėžti tokie duomenys kaip duomenų patvirtinimas, siekiant užtikrinti būtinų laukų buvimą, ir ryšiai. Bus naudojami du santykiai.

Tinklaraščio įraše yra daug komentarų. Ryšiui su „has_many“ nereikia jokių specialių laukų pranešimų lentelėje, tačiau komentarų lentelėje yra „post_id“, kad būtų galima susieti jį su įrašų lentele. Iš Bėgiai, galite pasakyti tokius dalykus kaip @ post.comments norint gauti komentarų objektų, priklausančių objektui @post, sąrašą. Komentarų taip pat yra priklausomas savo tėvų objekte. Jei objektas „Post“ yra sunaikintas, turėtų būti sunaikinti ir visi vaikų komentarų objektai.

Komentaras priklauso pašto objektui. Komentarą galima susieti tik su vienu tinklaraščio įrašu. Ryšiui pieder_to reikalingas tik vienas „post_id“ laukas, esantis komentarų lentelėje. Norėdami pasiekti komentaro tėvų įrašo objektą, galite pasakyti ką nors panašaus @ comment.post Rails.

Šie modeliai yra „Skelbti“ ir „Komentuoti“. Į komentarų modelį buvo įtraukta keletas patvirtinimų, siekiant užtikrinti, kad vartotojai užpildytų reikiamus laukus. Taip pat atminkite, kad santykiai turi daug ir priklauso.

Komentarų valdiklis nebus naudojamas tradiciniu būdu kaip RESTful valdiklis. Pirma, ją bus galima pasiekti tik iš pranešimų peržiūros. Komentarų formos ir rodymas yra visiškai skirti pašto kontrolieriaus veiksmui. Taigi, iš pradžių ištrinkite visą programa / rodiniai / komentarai katalogą, norėdami ištrinti visus komentarų rodinius. Jie nebus reikalingi.

Tada turėsite ištrinti kai kuriuos veiksmus iš komentarų valdiklio. Viskas, ko reikia yra kurti ir sunaikinti veiksmai. Visus kitus veiksmus galima ištrinti. Kadangi komentarų valdiklis dabar yra tik strypas be peržiūros, turite pakeisti keletą vietų valdiklyje, kur jis bando nukreipti į komentarų valdiklį. Visur, kur yra nukreipimo_to skambutis, pakeiskite jį į nukreipti_to (@ komentarą.postas). Žemiau yra visas komentarų valdytojas.

Vienas iš paskutinių dalykų, kuriuos reikia sudėti, yra komentarų forma, kuri iš tikrųjų yra gana paprasta užduotis. Iš esmės reikia padaryti du dalykus: sukurkite naują komentaro objektą įrašų valdiklio rodomame veiksme ir parodykite formą, kuri pateiks komentarų valdiklio kūrimo veiksmą. Norėdami tai padaryti, modifikuokite rodymo veiksmą įrašų valdiklyje, kad jis atrodytų taip. Pridėta eilutė paryškinta.

Paskutinis žingsnis yra faktiškai parodyti komentarai. Rodydami vartotojo įvestus duomenis, turite būti atsargūs, nes vartotojas gali bandyti įterpti HTML žymas, kurios gali sugadinti puslapį. Norėdami to išvengti, h naudojamas metodas. Šis metodas padės išvengti HTML žymių, kurias vartotojas bando įvesti. Tolesnėje iteracijoje galėtų būti taikoma žymėjimo kalba, tokia kaip „RedCloth“ ar filtravimo metodas, kad vartotojai galėtų paskelbti tam tikras HTML žymas.

Komentarai bus rodomi iš dalies, kaip ir pranešimai. Sukurkite failą pavadinimu programa / rodiniai / įrašai / _comment.html.erb ir įdėkite į jį šį tekstą. Jis parodys komentarą ir, jei vartotojas yra prisijungęs ir gali ištrinti komentarą, taip pat rodys nuorodą „Sunaikinti“, norėdamas sunaikinti komentarą.

Galiausiai, norėdami vienu metu rodyti visus įrašo komentarus, iškvieskite komentarus iš dalies naudodami : kolekcija => @ post.commentai. Tai vadins komentarus daliniais kiekvienam įrašui priklausančiam komentarui. Pridėkite šią eilutę prie rodomo rodinio įrašų valdiklyje.

Kitoje pamokslo iteracijoje paprastas_formatas bus pakeistas sudėtingesniu formatavimo varikliu, pavadinimu „RedCloth“. „RedCloth“ leidžia vartotojams kurti turinį su lengvais žymėjimais, tokiais kaip * paryškinti * paryškinti ir „_italic_“ paversti kursyvu. Tai galės rasti tiek tinklaraščio skelbėjai, tiek komentatoriai.