Dopuštanje komentara na Ruby na tračnicama

click fraud protection

U prethodnoj iteraciji, Dodavanjem RESTful Authentication, na vaš blog je dodana provjera autentičnosti, tako da samo ovlašteni korisnici mogu kreirati postove na blogu. Ova iteracija dodati će završnu (i glavnu) značajku tutorial bloga: komentari. Nakon što završite s ovim vodičem, korisnici će moći objavljivati ​​anonimne komentare na postovima na blogu bez prijave.

Izrada tablica baze podataka i kontrolera vrši se na isti način na koji su stvorene tablice baze podataka i kontroler - pomoću generatora skela. Generator skela stvorit će RESTful kontrolere, mapirati rute i stvoriti migracije baze podataka. No prije nego što se uključite u to, morate razmisliti o tome što je komentar i kakvi će biti njegovi članovi podataka. Komentar ima:

Nakon što odlučite koji su članovi podataka komentara, možete pokrenuti generator skela. Imajte na umu da je polje posta tipa "reference". To je posebna vrsta koja će generirati ID polje za povezivanje tablice komentara sa tablicom postova putem stranog ključa.

instagram viewer

Nakon što se generiraju kontroleri i migracije, možete nastaviti i pokrenuti migraciju izvodeći zadatak db: migrate rake.

Nakon što su postavljene tablice baze podataka, možete početi s postavljanjem modela. U modelu, stvari poput provjere podataka - kako bi se osiguralo prisustvo potrebnih polja - i odnosi se mogu definirati. Koristit će se dva odnosa.

Post na blogu ima mnogo komentara. Odnos has_many ne zahtijeva posebna polja u tablici postova, ali tablica komentara ima post_id da bi ga povezala sa tablicom postova. Iz šine, možete reći stvari poput @ post.comments da biste dobili popis objekata za komentar koji pripadaju objektu @post. Komentari su također zavisan na njihovom roditeljskom objektu Pošta. Ako je objekt Post uništen, trebali bi biti uništeni i svi dječiji komentari.

Komentar pripada objektu posta. Komentar se može povezati samo s jednim postom na blogu. Odnos last_to zahtijeva samo jedno post_id polje da bi bilo u tablici komentara. Da biste pristupili predmetu nadređenog posta, možete reći nešto poput 'comment.post u Rails.

Slijede modeli posta i komentara. Nekoliko potvrda dodano je modelu komentara kako bi se osiguralo da korisnici ispunjavaju tražena polja. Također imajte na umu odnose__broja i pripadnosti_.

Kontrolor komentara se neće koristiti na tradicionalni način korištenja RESTful kontrolera. Prvo će mu se pristupiti samo iz prikaza Pošte. Obrasci za komentare i prikaz u potpunosti su u prikaznoj radnji kontrolera Post. Dakle, za početak, izbrišite cijelu app / pogleda / komentara mapu za brisanje svih prikaza komentara. Neće im trebati.

Zatim trebate izbrisati neke radnje iz kontrolera Komentari. Sve što je potrebno je stvoriti i uništiti radnje. Sve ostale radnje mogu se izbrisati. Budući da je kontroler Komentari sada samo ubod bez prikaza, morate promijeniti nekoliko mjesta u kontroleru gdje se pokušava preusmjeriti na kontroler Komentari. Gdje god postoji poziv za preusmjeravanje_, promijenite ga u redirect_to (@ comment.post). Ispod je kompletni kontroler komentara.

Jedan od posljednjih dijelova koji treba uspostaviti je obrazac za komentare, što je zapravo prilično jednostavan zadatak. U osnovi treba učiniti dvije stvari: stvoriti novi objekt komentara u radnji prikazi kontrolera postova i prikazati obrazac koji podnosi radnju stvaranja kontrolera Komentari. Da biste to učinili, izmijenite prikaznu radnju u kontroleru postova tako da izgleda ovako. Dodani redak je podebljan.

Posljednji korak je zapravo prikazivanje komentari. Morate biti oprezni pri prikazivanju korisničkih ulaznih podataka jer bi korisnik mogao pokušati umetnuti HTML oznake što može poremetiti stranicu. Da biste to spriječili, h koristi se metoda. Ova će se metoda izbjeći sve HTML oznake koje korisnik pokuša unijeti. U daljnjoj se iteraciji može primijeniti označni jezik kao što je RedCloth ili metoda filtriranja kako bi se omogućilo korisnicima da postavljaju određene HTML oznake.

Komentari će se prikazivati ​​djelomično, baš kao što su postovi. Stvorite datoteku pod nazivom app / pogled / postove / _comment.html.erb i u nju stavite sljedeći tekst. Prikazat će komentar, a ako je korisnik prijavljen i može izbrisati komentar, također će prikazati vezu Destroy da uništi komentar.

Na kraju, da biste odjednom prikazali sve komentare na postu, nazovite komentare djelomičnim : collection => @ post.comments. Ovi će komentari biti djelomični za svaki komentar koji pripada postu. Dodajte sljedeći redak prikazu u kontroleru postova.

U sljedećoj iteraciji tutorijala simple_format će biti zamijenjen složenijim mehanizmom za oblikovanje koji se zove RedCloth. RedCloth korisnicima omogućuje stvaranje sadržaja uz jednostavno označavanje kao što su * podebljano * za podebljano i _italic_ za kurziv. Ovo će biti dostupno i posterima i komentatorima bloga.

instagram story viewer