2013-08-03 20 views
7

Günlüğümde, blog'um için bir alıntı oluşturmak için sanitize etmeye ve bir diğeriyle birlikte kesmeye çalışırken küçük bir sorunla karşılaştım. Kendi başına çalışılan, ancak birlikte kullanılan yöntemlerin her biri, yalnızca kısalırdı. Bunları sözdiziminden hem çalıştı (eski "Raylar İpuçları & Tricks Altı Yakut" başlıklı bir blog yazısında tavsiye edilen): Ben denetleyicisi kesilmesini koymak için çalıştı sonraRails Görüntüsünde Truncate + Sanitize

<%= truncate(sanitize(post.content), length: 580) %> 
<%= sanitize(truncate(post.content, length: 580, separator: '<p>')) %> 

Ve ve o nesneyi sterilize manzara, ama hala hayır.

Sonunda böyle çalışmak lazım: Ben bilmek istiyorum ne

<%= sanitize(post.content.truncate(580, separator: '</p>')) %> 

başka yöntemde bir yöntem sarılı zaman neden işe yaramadı mı? Bunu denediğim en son fark nedir?

TIA 'bondibox'

cevap

0

Truncate ve sterilize kontrolörleri dahil değildir, bunlar sırasıyla ActionView::Helpers::TextHelper ve ActionView::Helpers::SanitizeHelper parçasıdır. Bu modüller bir denetleyicide varsayılan olarak dahil edilmemiştir, bu yüzden orada kullanamazsınız. Bununla birlikte, her ikisi de görünümlere (şablonlar) dahil edilmiştir ve bu nedenle bunları orada kullanabilirsiniz. Yukarıda belirtilen modülleri orada kullanmak için bir kontrolör sınıfına dahil edebilirsiniz, ancak bunu tavsiye etmem.

İkinci ifadenin çalışmasının nedeni, Rayların bazı temel nesnelerini Ruby'den String gibi birçok methods ile genişletmesidir. Yani, aslında String yöntemiyle kesilmiş bir dizenin kesilmiş bir sürümünde dezenfekte edilmesini çağırın.

Her ikisinin kombinasyonu biraz zor. Size, sanitize ve truncate modüllerinin kombinasyonunun neden biraz daha fazla bilgi olmadan çalışmadığını söyleyemem. Tam olarak ne başarmayı denediniz (örnekler?)