Dovoljenje komentarjev o Ruby na tirnicah

V prejšnji iteraciji Dodajanje RESTful Authentication je bilo na vaš blog dodano preverjanje pristnosti, tako da so lahko samo pooblaščeni uporabniki ustvarjali objave v blogu. Ta iteracija bo dodala končno (in glavno) funkcijo vadnice spletnega dnevnika: komentarji. Ko končate s to vadbo, bodo uporabniki lahko objavljali anonimne komentarje v objavah na spletnem dnevniku, ne da bi se prijavili.

Ustvarjanje tabel in krmilnikov zbirke komentarjev poteka veliko na enak način, kot so bile ustvarjene tabele zbirke podatkov in krmilnik - s pomočjo generatorja odrov. Generator odrov bo ustvaril RESTful krmilnike, preslikal poti in ustvaril migracije baz podatkov. Toda preden se tega lotite, morate razmišljati o tem, kaj je komentar in kakšni bodo člani njegovih podatkov. Komentar je:

Ko se odločite, kaj so člani podatkov komentarja, lahko zaženete generator odrov. Upoštevajte, da je polje objave vrste "reference". To je posebna vrsta, ki bo ustvarila polje ID za povezavo tabele komentarjev s tabelo objav s tujim ključem.

instagram viewer

Ko so krmilniki in migracije generirani, lahko nadaljujete in zaženete migracijo, tako da zaženete nalogo db: migrate grablje.

Ko so tabele baz podatkov postavljene, lahko začnete postavljati model. V modelu so stvari, kot so preverjanje podatkov - za zagotovitev potrebnih polj - in razmerja je mogoče določiti. Uporabljena bosta dva razmerja.

V objavi na blogu je veliko komentarjev. Razmerje has_many ne zahteva nobenih posebnih polj v tabeli z objavami, vendar ima tabela komentarjev post_id, da jo poveže s tabelo objav. Od Tirnice, lahko rečete stvari, kot so @ post.comments da dobite seznam predmetov komentarjev, ki pripadajo objektu @post. Tudi komentarji so odvisen na matičnem predmetu Post. Če je objekt Objavi uničen, bi morali uničiti tudi vse nadrejene komentarje.

Komentar pripada predmetu objave. Komentar je lahko povezan samo z eno objavo v blogu. Razmerje last_to zahteva le eno polje post_id v tabeli komentarjev. Za dostop do nadrejenega predmeta objave komentarja lahko rečete nekaj takega @ comment.post v Tirnicah.

Sledijo modeli Objavi in ​​komentiraj. V model komentarja je bilo dodanih več preverjanj, ki zagotavljajo, da uporabniki izpolnijo obvezna polja. Upoštevajte tudi razmerja has_many in last_to.

Krmilnik komentarjev ne bo uporabljen na tradicionalen način, kot se uporablja RESTful krmilnik. Prvič, dostop do njega bo mogoč izključno iz ogledov objave. Obrazci za pripombe in prikaz so v celoti prikazani v upravljavcu Pošte. Za začetek izbrišite celoto aplikacija / pogledi / komentarji imenik za brisanje vseh pogledov komentarjev. Ne bodo potrebne.

Nato morate izbrisati nekaj dejanj iz krmilnika Comments. Vse, kar je potrebno, je ustvariti in uničiti dejanja. Vsa ostala dejanja je mogoče izbrisati. Ker je krmilnik Comments zdaj le škrbina brez pogledov, morate spremeniti nekaj mest v regulatorju, kjer se poskuša preusmeriti na krmilnik Comments. Kjer koli je klic preusmerjen, ga spremenite v preusmerite_to (@ comment.post). Spodaj je celoten krmilnik komentarjev.

Eden od zadnjih del, ki ga je treba postaviti, je oblika komentarjev, ki je pravzaprav precej preprosta naloga. V bistvu je treba storiti dve stvari: ustvariti nov objekt komentarja v prikazovalnem dejanju krmilnika objav in prikazati obrazec, ki je podvržen dejanju ustvarjanja krmilnika Komentarji. Če želite to narediti, spremenite prikazno dejanje v krmilniku objav tako, da je videti naslednje. Dodana vrstica je krepka.

Zadnji korak je dejansko prikaz komentarji. Pri prikazu uporabniških vhodnih podatkov je treba biti previden, saj lahko uporabnik poskusi vstaviti oznake HTML, ki lahko motijo ​​stran. Da bi to preprečili, h se uporablja metoda. Ta metoda se izogne ​​vsem oznakam HTML, ki jih uporabnik poskuša vnesti. V nadaljnji iteraciji se lahko uporabi označevalni jezik, kot je RedCloth ali metoda filtriranja, ki uporabnikom omogoča objavo določenih oznak HTML.

Komentarji bodo prikazani delno, tako kot so objave. Ustvari datoteko z imenom app / pogledi / objave / _comment.html.erb in vanj vstavite naslednje besedilo. Prikaže se komentar in, če je uporabnik prijavljen in lahko komentar izbriše, se prikaže tudi povezava Destroy, da komentar uniči.

Na koncu lahko za prikaz vseh komentarjev objave pokličete komentarje delno : collection => @ post.comments. Komentarji bodo delni za vsak komentar, ki pripada objavi. V prikazni prikaz v regulatorju objav dodajte naslednjo vrstico.

V naslednji ponovitvi vaje bo simple_format nadomeščen s kompleksnejšim mehanizmom oblikovanja, imenovanim RedCloth. RedCloth uporabnikom omogoča ustvarjanje vsebine z enostavno označitvijo, kot sta * bold * za krepko in _italic_ za poševno pisavo. To bo na voljo tako za plakate spletnega dnevnika kot za komentatorje.

instagram story viewer