Допуштање коментара на Руби на шине

click fraud protection

У претходној итерацији, Додавањем РЕСТфул Аутхентицатион-а, аутентификација је додата на ваш блог како би само овлашћени корисници могли да креирају постове на блогу. Ова итерација ће додати коначну (и главну) карактеристику туторијала на блогу: коментари. Након што завршите са овим водичем, корисници ће моћи да објављују анонимне коментаре на блоговима без пријављивања.

Израда табела базе података и контролера врши се на исти начин на који су створене табеле базе података и контролер - коришћењем генератора скела. Генератор скела ће створити РЕСТфул контролере, мапирати руте и створити миграције базе података. Али пре него што ово наставите, морате да размислите о томе шта је коментар и какви ће бити његови чланови података. Коментар има:

Након што одлучите шта су чланови података коментара, можете покренути генератор скела. Имајте на уму да је поље поста типа „референце“. Ово је посебна врста која ће генерисати ИД поље за повезивање табеле коментара са таблицом постова преко страног кључа.

instagram viewer

Једном када су генерирани контролери и миграције, можете наставити и покренути миграцију покретањем задатка дб: миграте раке.

Једном када су постављене табеле база података, можете да почнете са постављањем модела. У моделу, ствари попут валидације података - како би се осигурало присуство обавезних поља - и односи се могу дефинисати. Користиће се два односа.

Пост на блогу има много коментара. Однос хас_мани не захтева никаква посебна поља у табели са постовима, али табела са коментарима има пост_ид да би га повезала са таблицом постова. Фром Шине, можете рећи ствари попут @ пост.цомментс да бисте добили листу објеката за коментар који припадају објекту @пост. Коментари су такодје зависни на матичном објекту Пошта. Ако је објект Пост уништен, требали би бити уништени и сви дечији коментари.

Коментар припада објекту поста. Коментар се може повезати само са једним постом на блогу. Однос припада_то захтева само једно пост_ид поље да би било у табели са коментарима. Да бисте приступили надређеном објекту поста, можете рећи нешто слично @ цоммент.пост у Раилс.

Следе модели поста и коментара. Неколико потврда је додато моделу коментара како би се осигурало да корисници попуњавају обавезна поља. Имајте на уму и односе хас_мани и припадати_то.

Контролор коментара се неће користити на традиционални начин на који се користи РЕСТфул контролер. Прво, њему ће се приступити искључиво из приказа поста. Обрасци за коментаре и приказ у потпуности су у приказној радњи контролера Пост. За почетак, избришите целокупно апликација / прикази / коментари директоријум за брисање свих приказа коментара. Неће им требати.

Затим треба да избришете неке радње из контролера Коментари. Све што је потребно је Креирај и уништити акције. Све остале радње могу се избрисати. Пошто је контролер Коментари сада само штрафта без приказа, морате да промените неколико места у контролеру где покушава да преусмери на контролер Коментари. Где год постоји позив за преусмеравање_, промените га у редирецт_то (@ цоммент.пост). Испод је комплетни контролер коментара.

Један од последњих комада који треба успоставити је образац за коментаре, што је заправо прилично једноставан задатак. У основи треба учинити две ствари: креирати нови објект коментара у приказу радње контролера постова и приказати образац који подноси радњу стварања контролера Коментари. Да бисте то учинили, модификујте радњу приказивања у контролеру постова тако да изгледа следеће. Додата линија је подебљана.

Завршни корак је заправо приказивање коментари. Морате бити опрезни при приказивању корисничких улазних података јер би корисник могао покушати уметнути ХТМЛ ознаке што би могло пореметити страницу. Да бисте то спречили, х користи се метода. Ова метода ће избећи све ХТМЛ тагове које корисник покуша да унесе. У даљњој итерацији, означни језик као што је РедЦлотх или метода филтрирања може се примијенити како би се омогућило корисницима да постављају одређене ХТМЛ ознаке.

Коментари ће се приказивати дјеломично, баш као што су постовали. Креирајте датотеку под називом апп / виевс / постс / _цоммент.хтмл.ерб и ставите у њу следећи текст. Приказаће се коментар, а ако је корисник пријављен и може избрисати коментар, приказаће и везу Дестрои да уништи коментар.

На крају, да бисте одједном приказали све коментаре на посту, назовите коментаре делимичним : цоллецтион => @ пост.цомментс. Коментари ће бити делимични за сваки коментар који припада посту. Додајте следећи ред приказу у контролеру постова.

У следећој итерацији туторијала, симпле_формат ће бити замењен сложенијим механизмом за обликовање који се зове РедЦлотх. РедЦлотх омогућава корисницима да креирају садржај једноставним маркирањем попут * болд * за подебљани и _италиц_ за курзив. Ово ће бити доступно и постерима и коментаторима блога.

instagram story viewer