القضبان: فرز أكثر علامات ACTS_AS_TAGGGAGE
-
28-09-2019 - |
سؤال
لقد قمت بإعداد نموذجين: user
و post
. كل post
belongs_to
أ user
. post
S أيضا علامات ، باستخدام ACTS_AS_TAGGABLE. على UserController#show
أرغب في إدراج العلامات التي يستخدمها المستخدم ، والفرز من معظم المستخدمين إلى أقل استخدامًا.
الحصول على قائمة من العلامات ليس بالأمر الصعب ، ولكن كيف يمكنني فرزها؟ أستخدم هذا للعثور على العلامات:
@tags = []
@user.posts.each do |post|
@tags += post.tags
end
هل يمكن لأي شخص أن يشرح لي كيف يمكنني فرز العلامات؟ شكرًا.
المحلول
يمكنك استخدام طريقة tag_counts التي توفرها البرنامج المساعد:
@user.posts.tag_counts
مزيد من المعلومات هنا: http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
تعديل:
رمز بسيط بسيط للفرز:
@tags = Hash.new(0)
@user.posts.each do |post|
post.tags.each do |tag|
@tags[tag] += 1 if @tags.has_key?(tag)
end
end
# sorting
@tags.sort{|a,b| a[1] <=> b[1]}
ربما هناك طريقة أفضل للقيام بذلك.
لا تنتمي إلى StackOverflow