سؤال

لقد قمت بإعداد نموذجين: user و post. كل post belongs_to أ user. postS أيضا علامات ، باستخدام 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]}

ربما هناك طريقة أفضل للقيام بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top