באיטרציה הקודמת, הוספת אימות RESTful, אימות נוסף לבלוג שלך כך שרק משתמשים מורשים יוכלו ליצור פוסטים בבלוג. איטרציה זו תוסיף את התכונה הסופית (והעיקרית) של הדרכת הבלוג: הערות. לאחר שתסיים את ההדרכה הזו, המשתמשים יוכלו לפרסם תגובות אנונימיות על פוסטים בבלוג מבלי להיכנס.
יצירת טבלאות מסד הנתונים והבקר נעשה הרבה באותה צורה שנוצרו טבלאות מסד הנתונים והבקר - באמצעות גנרטור הפיגומים. גנרטור הפיגומים ייצר בקרי RESTful, נתיבי מפה וייצור הגירות של מסדי נתונים. אבל לפני שאתה לוקח את זה, אתה צריך לחשוב מהי תגובה ומה יהיו חברי הנתונים שלה. לתגובה יש:
לאחר שהחלטתם מהם חברי הנתונים של תגובה, תוכלו להפעיל את מחולל הפיגומים. שים לב ששדה ההודעה הוא מסוג "הפניות". זהו סוג מיוחד שיוצר שדה מזהה לקישור טבלת התגובות לטבלת ההודעות באמצעות מפתח זר.
לאחר שנוצרו הבקרים וההגירה, תוכלו להמשיך ולהעביר את ההגירה על ידי הפעלת משימת הגרירה db: migrate.
לאחר שטבלאות בסיס הנתונים קיימות, תוכלו להתחיל בהגדרת המודל. במודל קיימים דברים כמו אימות נתונים - כדי להבטיח שדות נדרשים - וניתן להגדיר יחסים. יש להשתמש בשני יחסים.
לפוסט בבלוג יש תגובות רבות. מערכת היחסים has_many אינה מצריכה שדות מיוחדים בטבלת ההודעות, אך לטבלת התגובות יש post_id לקישור זה לטבלת ההודעות. מ
פסי רכבת, אתה יכול לומר דברים כמו @פרסם תגובות כדי לקבל רשימה של אובייקטי תגובה השייכים לאובייקט @post. גם הערות תלוי על אובייקט ההורה שלהם. אם אובייקט הפוסט נהרס, יש להשמיד גם את כל חפצי התגובה לילדים.הערה שייכת לאובייקט פוסט. ניתן לשייך תגובה לפוסט בלוג יחיד. מערכת היחסים שייכת_ למחייב דורשת רק שדה post_id יחיד בטבלת התגובות. כדי לגשת לאובייקט פוסט ההורה של תגובה, אתה יכול לומר משהו כמו @ comment.post בסילות.
להלן דגמי ההודעה וההערה. למודל התגובות נוספו מספר אימות כדי להבטיח שמשתמשים ימלאו את השדות הנדרשים. שימו לב גם לקשרי ה- has_many והשייכים_ ליחסים.
בקר התגובות לא ישמש באופן המסורתי בו משתמשים בבקר RESTful. ראשית, ניתן לגשת אליו אך ורק מהשקפות הפוסט. טפסי התגובה והתצוגה כוללים את פעולת התצוגה של בקר הדואר. אז ראשית, מחק את כולו אפליקציה / צפיות / הערות ספרייה למחיקת כל תצוגות התגובות. הם לא יהיו נחוצים.
בשלב הבא עליכם למחוק כמה מהפעולות מבקר התגובות. כל מה שצריך זה ליצור ו להרוס פעולות. ניתן למחוק את כל הפעולות האחרות. מכיוון שבקר התגובות הוא כעת סתם חסות ללא תצוגות, עליכם לשנות כמה מקומות בבקר שם הוא מנסה להפנות לבקר התגובות. בכל מקום שיש שיחה להפניה מחדש, שנה אותה ל redirect_to (@ comment.post). להלן בקר התגובות השלם.
אחד הקטעים הסופיים שהוצבו במקום הוא טופס ההערות, שהוא למעשה משימה די פשוטה. יש בעיקרון שני דברים לעשות: ליצור אובייקט תגובה חדש בפעולה המוצגת של בקר ההודעות ולהציג טופס שמגיש לפעולה ליצור של בקר ההערות. לשם כך, שנה את פעולת ההצגה בבקר ההודעות כך שתראה כמו הבאה. השורה הנוספת מודגשת.
השלב האחרון הוא להציג בפועל את הערות. יש להקפיד על הצגת נתוני קלט של משתמשים, שכן משתמש עשוי לנסות להכניס תגי HTML העלולים להפריע לדף. כדי למנוע זאת, ח משתמשים בשיטה. שיטה זו תימלט מכל תגי HTML שהמשתמש ינסה להזין. באיטרציה נוספת, ניתן להחיל שפת סימון כגון RedCloth או שיטת סינון כדי לאפשר למשתמשים לפרסם תגי HTML מסוימים.
התגובות יוצגו עם חלקי, ממש כמו שהיו פוסטים. צור קובץ בשם אפליקציה / צפיות / פוסטים / _comment.html.erb והניח בו את הטקסט הבא. הוא יציג את התגובה, ואם המשתמש מחובר ויכול למחוק את ההערה, גם יציג את קישור ההשמדה כדי להרוס את ההערה.
לבסוף, כדי להציג את כל התגובות של הפוסט בבת אחת, התקשר לתגובות באופן חלקי עם : collection => @ post.comments. זה יקרא את התגובות חלקיות לכל תגובה ששייכת לפוסט. הוסף את השורה הבאה לתצוגת התוכנית בבקר ההודעות.
באיתור ההדרכה הבא, simple_format יוחלף במנוע עיצוב מורכב יותר בשם RedCloth. RedCloth מאפשר למשתמשים ליצור תוכן בעזרת סימון קל כגון * מודגש * עבור מודגש ו- _italic_ עבור נטוי. זה יהיה זמין גם לפרסומי הבלוג וגם למגיבים.