Komentāru atļaušana par Ruby on Rails

Iepriekšējā iterācijā, pievienojot RESTful autentifikāciju, jūsu emuāram tika pievienota autentifikācija, lai tikai pilnvaroti lietotāji varētu izveidot emuāra ziņas. Šī iterācija pievienos emuāra apmācības pēdējo (un galveno) iezīmi: komentārus. Kad šī apmācība būs pabeigta, lietotāji varēs ievietot anonīmus komentārus par emuāru ierakstiem, nepiesakoties.

Komentāru datu bāzes tabulas un kontrolieri tiek izveidoti tādā pašā veidā kā ziņu datu bāzes tabulas un kontrolieris tika izveidots, izmantojot sastatņu ģeneratoru. Sastatņu ģenerators izveidos RESTful kontrolierus, kartēs maršrutus un izveidos datu bāzu migrācijas. Bet pirms jūs to sākat pārdomāt, kas ir komentārs un kādi būs tā dati. Komentāram ir:

Kad esat izlēmis, kādi ir komentāra datu biedri, varat palaist sastatņu ģeneratoru. Ņemiet vērā, ka ziņas laukam ir “atsauces”. Šis ir īpašs tips, kas ģenerēs ID lauku, lai ar svešas atslēgas palīdzību saistītu komentāru tabulu ar ziņu tabulu.

Kad kontrolieri un migrācija ir ģenerēti, varat iet uz priekšu un veikt migrāciju, palaižot uzdevumu db: migrēt grābeklis.

instagram viewer

Kad datu bāzes tabulas ir izveidotas, varat sākt modeļa iestatīšanu. Modelī var definēt tādas lietas kā datu validācija - lai nodrošinātu nepieciešamo lauku esamību - un attiecības. Tiks izmantotas divas attiecības.

Emuāra ierakstā ir daudz komentāru. Saistībai has_many nav nepieciešami īpaši lauki ziņu tabulā, bet komentāru tabulai ir post_id, lai to saistītu ar ziņu tabulu. No plkst Sliedes, jūs varat pateikt tādas lietas kā @ post.comments lai iegūtu komentāru objektu sarakstu, kas pieder objektam @post. Komentāri arī ir atkarīgs uz viņu vecāku objekta Post. Ja objekts Post tiek iznīcināts, jāiznīcina arī visi bērnu komentāru objekti.

Komentārs pieder pasta objektam. Komentāru var saistīt tikai ar vienu emuāra ziņu. Attiecībām pieder_to nepieciešams tikai viens post_id lauks, lai tas būtu komentāru tabulā. Lai piekļūtu komentāra vecāka ziņas objektam, varat pateikt kaut ko līdzīgu @ komentārs.post Rails.

Tālāk ir norādīti modeļu publicēšanas un komentēšanas veidi. Komentāru modelim ir pievienotas vairākas validācijas, lai pārliecinātos, ka lietotāji aizpilda nepieciešamos laukus. Ņemiet vērā arī has_many un pieder_to attiecības.

Komentāru kontrolieris netiks izmantots tradicionāli, kā tiek izmantots RESTful kontrolieris. Pirmkārt, tam varēs piekļūt, tikai izmantojot skatu Ziņas. Komentāru veidlapas un attēlojums pilnībā ietilpst Pasta kontroliera parādītajā darbībā. Tātad, lai sāktu, izdzēsiet visu lietotne / skati / komentāri direktorijā, lai izdzēstu visus komentāru skatus. Viņi nebūs vajadzīgi.

Pēc tam no komentāru kontrollera jāizdzēš dažas darbības. Viss, kas nepieciešams, ir izveidot un iznīcināt darbības. Visas citas darbības var izdzēst. Tā kā komentāru kontrolieris tagad ir tikai šķautne, kurā nav skatu, jums ir jāmaina dažas vietas kontrollerī, kur tas mēģina novirzīt uz komentāru kontrolieri. Lai kur būtu pāradresācijas_zvans, mainiet to uz redirect_to (@ comment.post). Zemāk ir pilns komentāru kontrolieris.

Viens no pēdējiem gabaliem, kas jāievieš, ir komentāru forma, kas faktiski ir diezgan vienkāršs uzdevums. Pamatā ir jāveic divas lietas: izveidojiet jaunu komentāru objektu ziņu kontrollera rādīšanas darbībā un parādiet formu, kas pakļauta komentāru kontroliera izveidošanas darbībai. Lai to izdarītu, modificējiet parādīšanas darbību ziņu kontrollerī, lai tā izskatās šādi. Pievienotā rinda ir treknrakstā.

Pēdējais solis ir, lai faktiski parādītu komentāri. Rādot lietotāja ievadītos datus, ir jābūt uzmanīgiem, jo ​​lietotājs var mēģināt ievietot HTML tagus, kas varētu izjaukt lapu. Lai to novērstu, h tiek izmantota metode. Šī metode ļaus izvairīties no visiem HTML tagiem, kurus lietotājs mēģina ievadīt. Turpmākā iterācijā varētu tikt izmantota marķēšanas valoda, piemēram, RedCloth vai filtrēšanas metode, lai lietotāji varētu izlikt noteiktus HTML tagus.

Komentāri tiks parādīti daļēji, tāpat kā ziņas. Izveidojiet failu ar nosaukumu app / views / posts / _comment.html.erb un ievietojiet tajā šādu tekstu. Tas parādīs komentāru un, ja lietotājs ir pieteicies un var izdzēst komentāru, parādīs arī saiti Iznīcināt, lai komentāru iznīcinātu.

Visbeidzot, lai vienlaikus parādītu visus ziņas komentārus, izsauciet tos daļēji, izmantojot : kolekcija => @ post.comments. Par katru komentāru, kas pieder pie ziņas, komentāri tiks saukti par daļējiem. Pievienojiet šo rindu šova skatam ziņu kontrollerī.

Nākamajā apmācības atkārtojumā simple_format tiks aizstāts ar sarežģītāku formatēšanas motoru ar nosaukumu RedCloth. RedCloth ļauj lietotājiem izveidot saturu ar vieglu iezīmēšanu, piemēram, * treknraksts * treknrakstam un _italic_ slīprakstam. Tas būs pieejams gan emuāru publicētājiem, gan komentētājiem.

instagram story viewer