Ruby on Rails-kommenttien salliminen

Edellisessä iteraatiossa, jonka mukaan lisättiin RESTful Authentication, autentikointi lisättiin blogiisi, jotta vain valtuutetut käyttäjät voivat luoda blogiviestejä. Tämä iterointi lisää blogin opetusohjelman lopullisen (ja tärkeän) ominaisuuden: kommentit. Kun olet saanut tämän oppaan valmiiksi, käyttäjät voivat lähettää nimettömiä kommentteja blogiviesteihin kirjautumatta sisään.

Kommenttitietokantataulukoiden ja ohjaimen luominen tapahtuu suurin piirtein samalla tavalla kuin viestitietokantataulut ja ohjain luotiin - telinegeneraattorin avulla. Telinegeneraattori luo RESTful-ohjaimia, kartoittaa reittejä ja luo tietokannan muutoksia. Mutta ennen kuin otat tämän vastaan, sinun on mietittävä, mikä kommentti on ja mitkä ovat sen jäsenet. Kommentissa on:

Kun olet päättänyt, mitkä kommentin tiedot jäsenet ovat, voit ajaa telinegeneraattoria. Huomaa, että viestikentän tyyppi on "viitteet". Tämä on erityinen tyyppi, joka luo tunnuskentän linkittämään kommenttitaulukon viestit-taulukkoon vieraan avaimen kautta.

instagram viewer

Kun ohjaimet ja siirrot on luotu, voit siirtyä eteenpäin ja suorittaa siirron suorittamalla db: mig rake -tehtävä.

Kun tietokantataulukot ovat paikoillaan, voit aloittaa mallin asettamisen. Mallissa voidaan esimerkiksi määritellä datan validoinnit - jotta varmistetaan vaadittavat kentät - ja suhteet. Kahta suhdetta käytetään.

Blogiviestissä on paljon kommentteja. Has_many-suhde ei vaadi erityisiä kenttiä viestit-taulukossa, mutta kommentti-taulukossa on post_id linkittääksesi sen viesti taulukkoon. alkaen kiskot, voit sanoa esimerkiksi @ post.comments saadaksesi luettelon kommenttiobjekteista, jotka kuuluvat @post-objektiin. Kommentit ovat myös riippuvainen heidän vanhempaan Post-objektiinsa. Jos Post-objekti tuhoutuu, myös kaikki alakommenttiobjektit tulisi tuhota.

Kommentti kuuluu viestiobjektiin. Kommentti voidaan liittää vain yhteen blogin viestiin. Suhde pieder_to vaatii vain yhden post_id-kentän olla kommentti taulukossa. Päästäksesi kommentin vanhempaan viestiobjektiin voit sanoa jotain @ comment.post sisään Rails.

Seuraavat ovat viesti- ja kommenttimalleja. Kommenttimalliin on lisätty useita validointeja sen varmistamiseksi, että käyttäjät täyttävät vaadittavat kentät. Huomaa myös has_many- ja pieder_-suhteet.

Kommenttiohjainta ei käytetä perinteisellä tavalla. Ensinnäkin siihen pääsee yksinomaan Viestinäkymistä. Kommenttilomakkeet ja näyttö ovat täysin Post-ohjaimen näyttelytoiminnossa. Joten aloita poistamalla koko app / näkemyksiä / kommentteja hakemisto poistaaksesi kaikki kommenttinäkymät. Niitä ei tarvita.

Seuraavaksi sinun on poistettava jotkut toiminnot Kommentit-ohjaimesta. Tarvitsee vain luoda ja tuhota Toiminnot. Kaikki muut toiminnot voidaan poistaa. Koska Kommentit-ohjain on nyt vain tynkä, jolla ei ole näkymiä, joudut vaihtamaan muutaman paikan ohjaimessa, jossa se yrittää ohjata Kommentit-ohjaimeen. Vaihda puhelu mihin tahansa kohtaan soitonsiirto_soittoon redirect_to (@ comment.post). Alla on täydellinen kommenttien ohjain.

Yksi lopullisista paikoista, jotka asetetaan paikoilleen, on kommenttilomake, joka on oikeastaan ​​melko yksinkertainen tehtävä. Periaatteessa on tehtävä kaksi asiaa: luoda uusi kommenttiobjekti viestiohjaimen näyttelytoimintoon ja näyttää lomake, joka toimittaa kommenttiohjaimen luontitoimintoon. Muokkaa tätä varten viestiohjaimen näytötoimenpide seuraavan tyyppiseksi. Lisätty rivi on lihavoitu.

Viimeinen vaihe on näyttää kommentit. Käyttäjän syöttötietojen näyttämisessä on oltava varovainen, koska käyttäjä voi yrittää lisätä HTML-tunnisteita, jotka voivat häiritä sivua. Tämän estämiseksi h menetelmää käytetään. Tämä menetelmä välttää kaikki HTML-tunnisteet, jotka käyttäjä yrittää syöttää. Lisä iteraatiossa voidaan käyttää merkintäkieltä, kuten RedCloth tai suodatusmenetelmää, jotta käyttäjät voivat lähettää tiettyjä HTML-tunnisteita.

Kommentit näytetään osittain, samoin kuin viestit. Luo tiedosto nimeltä app / näkemyksiä / viestiä / _comment.html.erb ja laita seuraava teksti siihen. Se näyttää kommentin ja, jos käyttäjä on kirjautunut sisään ja voi poistaa kommentin, näyttää myös Tuhoa-linkin kommentin tuhoamiseksi.

Viimeinkin, jos haluat näyttää kaikki viestin kommentit kerralla, soita kommentit osittaisiksi : kokoelma => @ post.commentit. Tämä kutsuu kommentit osittaisiksi jokaiselle viestiin liittyvälle kommentille. Lisää seuraava rivi viestinhallinnan näytönäkymään.

Seuraavassa opetusohjelman iteraatiossa simple_format korvataan monimutkaisemmalla muotoilukoneella, nimeltään RedCloth. RedCloth antaa käyttäjille luoda sisällön helposti merkinnöillä, kuten * lihavoitu * lihavoituna ja _italic_ kursivoituna. Tämä on saatavana sekä blogin julkaisijoille että kommentaattoreille.