2010-01-12 4 views
11

Ich erstelle ein Blog in Rails mit Gerüstbau. Ich möchte zu jedem Beitrag ein "Tags" -Feld hinzufügen, wie auf StackOverflow und WordPress. Ich kann dies mit dem String-Typ (rails generate scaffold post title:string body:text tags:string) und dann durch Komma getrennt machen, aber es ist keine gute Übung, da ich möchte, dass der Reader nach Tags sucht (z. B. /tags/web20 oder /tags/lol). Wie kann ich das machen?Hinzufügen von Tags zu Posts in Ruby on Rails

+0

Ich denke, Sie müssen etwas wie Gerüst Tag Tagname machen: string Jeder Beitrag kann mehrere Tags haben und jedes Tag kann mehrere Beiträge haben. Ich habe das noch nicht gemacht, aber ich bin auch daran interessiert! – Newbie

Antwort

17

Tagging ist so üblich, dass Implementierungen eine Ware sind. Ich glaube, "acts as taggable on" ist normalerweise die bevorzugte Art der Implementierung von Tags.

Siehe andere beliebte Lösungen here.

Wenn Sie es selbst implementieren möchten, können Sie in den Quellcode eintauchen, um einige Ideen zu finden.

0

Err, der übliche Weg? Fügen Sie Tag entity hinzu, fügen Sie in Ihrer Post-Entität has_many :tags hinzu. Dann migrieren. Das wäre alles.

+0

Ich habe das gemacht und migriert. Ich bin ziemlich neu zu has_many und gehört_to. Kannst du mir auch erklären, wie ich das in meinem Controller umsetzen und anzeigen kann? Vielen Dank! –

+1

Lesen Sie die Antwort von molf. – F0RR

1

Ich würde vorschlagen, ein Tag-Modell zu erstellen und has_and_belongs_to_many zu verwenden, um Posts Tags zuzuordnen. Ich weiß nicht, ob die Scaffold-Funktion Ihnen helfen wird, ein Formular dafür zu erstellen, aber es sollte nicht schwierig sein, es selbst hinzuzufügen. Ich schlage auch vor, das formtastic-Plugin zu verwenden, da es viel einfacher und schöner ist, Formulare damit zu erstellen.