Ruby on Rails Yorumlarına İzin Verme

Önceki yineleme olan RESTful Kimlik Doğrulaması Ekleme'de blogunuza yalnızca yetkili kullanıcıların blog yayınları oluşturabilmesi için kimlik doğrulama eklendi. Bu yineleme blog öğreticisinin son (ve büyük) özelliğini ekleyecektir: yorumlar. Bu eğitici yazmayı tamamladıktan sonra, kullanıcılar giriş yapmadan blog yayınlarına anonim yorumlar gönderebilecek.

Yorumlar veritabanı tabloları ve denetleyicisi oluşturmak, iskele veritabanı oluşturucuları ve denetleyicisi oluşturulduğu gibi, iskele oluşturucusunu kullanarak da yapılır. İskele jeneratörü RESTful kontrolörleri oluşturacak, güzergahları haritalayacak ve veritabanı geçişleri oluşturacaktır. Ancak bunu yapmadan önce, bir yorumun ne olduğunu ve veri üyelerinin ne olacağını düşünmelisiniz. Bir yorumda şunlar bulunur:

Bir yorumun veri üyelerinin ne olduğuna karar verdikten sonra, iskele üreticisini çalıştırabilirsiniz. Gönderi alanının "başvurular" türünde olduğunu unutmayın. Bu, yorum tablosunu bir yabancı anahtar aracılığıyla yazılar tablosuna bağlamak için bir kimlik alanı oluşturacak özel bir türdür.

instagram viewer

Denetleyiciler ve geçişler oluşturulduktan sonra db: migrate komisyon görevini çalıştırarak geçişi çalıştırabilirsiniz.

Veritabanı tabloları yerleştirildikten sonra, modeli ayarlamaya başlayabilirsiniz. Modelde, gerekli alanların mevcut olmasını sağlamak için veri doğrulama gibi şeyler ve ilişkiler tanımlanabilir. İki ilişki kullanılacaktır.

Bir blog gönderisinde birçok yorum var. Has_many ilişkisi, yayınlar tablosunda herhangi bir özel alan gerektirmez, ancak yorumlar tablosunun yayınlar tablosuna bağlamak için bir posta_kimliği vardır. itibaren Raylargibi şeyler söyleyebilirsin @yorum göndermek @ post nesnesine ait Yorum nesnelerinin listesini almak için. Yorumlar da bağımlı üst Post nesnesinde. Post nesnesi yok edilirse, tüm alt yorum nesneleri de yok edilmelidir.

Bir yorum bir yazı nesnesine aittir. Bir yorum yalnızca tek bir blog gönderisiyle ilişkilendirilebilir. Belongs_to ilişkisi, yorumlar tablosunda yalnızca tek bir post_id alanının bulunmasını gerektirir. Bir yorumun üst yayın nesnesine erişmek için aşağıdaki gibi bir şey söyleyebilirsiniz: @ comment.post Rails Şehrindeki oteller.

Aşağıdaki Yorum ve Yorum modelleri. Kullanıcıların gerekli alanları doldurmasını sağlamak için yorum modeline birkaç doğrulama eklendi. Ayrıca has_many ve ait olduğu ilişkilere de dikkat edin.

Yorum denetleyicisi geleneksel bir RESTful denetleyicisini kullanmaz. İlk olarak, yalnızca Post görünümlerinden erişilebilir. Yorum formları ve görüntüleme tamamen Post denetleyicisinin show eylemindedir. Bu nedenle, tümüyle Uygulamanın / görünümler / yorum Tüm yorum görünümlerini silmek için bir dizin. Onlara gerek kalmayacak.

Ardından, bazı denetimleri Yorumlar denetleyicisinden silmeniz gerekir. Tek gereken oluşturmak ve yıkmak hareketler. Diğer tüm eylemler silinebilir. Yorumlar denetleyicisi artık yalnızca görünümü olmayan bir saplama olduğundan, denetleyicide Yorumlar denetleyicisine yeniden yönlendirmeye çalıştığı birkaç yeri değiştirmeniz gerekir. Çağrı yapmak için bir redirect_ nerede olursa, redirect_to (@ comment.post). Aşağıda tam yorum denetleyicisi verilmiştir.

Yerleştirilecek son parçalardan biri, aslında oldukça basit bir görev olan yorum formudur. Yapılması gereken temel olarak iki şey vardır: mesajlar denetleyicisinin gösteri eyleminde yeni bir Comment nesnesi oluşturun ve Comments denetleyicisinin oluşturma eylemine gönderilen bir form görüntüleyin. Bunu yapmak için, yazı denetleyicisindeki show eylemini aşağıdaki gibi görünecek şekilde değiştirin. Eklenen satır kalın yazı tipindedir.

Son adım, yorumlar. Bir kullanıcı sayfayı bozabilecek HTML etiketleri eklemeyi deneyebileceğinden, kullanıcı giriş verilerini görüntülerken dikkatli olunmalıdır. Bunu önlemek için, h yöntemi kullanılır. Bu yöntem, kullanıcının girmeye çalıştığı HTML etiketlerinden kaçar. Başka bir yinelemede, kullanıcıların belirli HTML etiketlerini göndermesine izin vermek için RedCloth veya bir filtreleme yöntemi gibi bir biçimlendirme dili uygulanabilir.

Yorumlar, yazılar gibi kısmi olarak görüntülenir. Adlı bir dosya oluşturun Uygulamanın / / gönderiler / _comment.html.erb ve içine aşağıdaki metni yerleştirin. Yorumu görüntüler ve kullanıcı oturum açtıysa ve yorumu silebilirse, yorumu yok etmek için Yok et bağlantısını da görüntüler.

Son olarak, bir yayının tüm yorumlarını bir kerede görüntülemek için, yorumları kısmi olarak arayın. : koleksiyon => @ post.comments. Bu, yayına ait her yorum için yorumları kısmi olarak çağırır. Yayınlar denetleyicisindeki şov görünümüne aşağıdaki satırı ekleyin.

Bir sonraki öğretici yinelemede, simple_format, RedCloth adlı daha karmaşık bir biçimlendirme motoruyla değiştirilecek. RedCloth, kullanıcıların kalın için * kalın * ve italik için _italic_ gibi kolay biçimlendirme ile içerik oluşturmasına olanak tanır. Bu hem blog posterleri hem de yorum yapanlar için geçerli olacaktır.

instagram story viewer