2009-07-21 5 views
2

Ich versuche, die beste Lösung zu finden:Best Practice: Verschiedene Kategorien - beste Plugin für sie (fungiert als markierbare, fungiert als Baum, ...)

Ich habe einen usermodel und der Benutzer sollte in der Lage sein, um die Schlüsselwörter (mehrere Kontexte) zu speichern, an denen er interessiert ist.

F.e.

User-interessts: 

Sports: Checkbox(CB) fishing, CB Skyying, CB Tennis, CB Soccer 

Music: CB Metal, CB Techno, CB Folk, CB Charts, ... 

und so weiter ...

Nachdem der Benutzer seine Auswahl speichert, ich möchte folgende Suche-Funktionalität bieten:

find by main category(input: sports, music,....) 

find by keyword (input: sports, music, metal, fishing,....) 

find by most viewed (show data with the most associated users) 

, und ich möchte ein Auto erzeugt haben Tag-Cloud (wie acts_as_taggable_on bietet)

Außerdem wäre es cool, wenn die Listen einfach administrierbar wären - Stichworte können beispielsweise nicht als Haupt- und Unterkategorien verwendet werden (vielleicht thi s arbeitet mit tag_contexts) ...?

Ich versuchte dies mit Acts_as_tree aufzubauen, aber das war nicht begrenzt. Dann habe ich es mit Tags als Taggable versucht, aber ich bekomme es nicht, wie ich auf das Tag-Modell zugreifen kann (es gibt keine Tag.rb-Datei in meinem Modellordner).

Können Sie mir helfen? Hast du eine bessere Lösung?

Dank

+0

Die Datei tag.rb würde mit den Plugin-Dateien gefunden werden. Es ist eine Weile her, seit ich mit Rails gearbeitet habe, also ist es wahrscheinlich ein Teil des Rails-Kerns, aber es war früher in Vendor/plugin/acts_as_taggable/model oder so ähnlich. – mveerman

+0

Hm ... Aber wie kann ich diese Klasse erweitern? – Lichtamberg

Antwort

4

, die wie fast genau klingt, was "acts-as-taggable-on" bietet.

Von der readme:

 
class User < ActiveRecord::Base 
    acts_as_taggable_on :tags, :skills, :interests 
end 

@user = User.new(:name => "Bobby") 
@user.tag_list = "awesome, slick, hefty"  # this should be familiar 
@user.skill_list = "joking, clowning, boxing" # but you can do it for any context! 
@user.skill_list # => ["joking","clowning","boxing"] as TagList 
@user.save 

@user.tags # => [<Tag name:"awesome">,%lt;Tag name:"slick">,<Tag name:"hefty">] 
@user.skills # => [<Tag name:"joking">,<Tag name:"clowning">,<Tag name:"boxing">] 

# example finds: 
User.tagged_with("awesome", :on => :tags) # => [@user] 
User.tagged_with("awesome", :on => :skills) # => [] 
1

Bemerkenswert ist, dass Sie immer auf korrekte tag.rb, indem Sie die unten bekommen kann.

<% ActsAsTaggableOn::Tag.example_method_on_class %> 
Verwandte Themen