2010-01-12 13 views
11

Sto creando un blog in Rails utilizzando Scaffolding. Voglio aggiungere un campo 'tag' su ogni post come su StackOverflow e WordPress. Posso farlo con il tipo di stringa (rails generate scaffold post title:string body:text tags:string) e quindi separato da virgola, ma non è una buona pratica dato che voglio che il lettore navighi per tag (ad esempio /tags/web20 o /tags/lol). Come posso fare questo?Aggiunta di tag ai post in Ruby on Rails

+0

Penso che devi fare qualcosa come tag scaffold tagname: stringa Ogni post può avere diversi tag e ogni tag può avere diversi post. Non l'ho ancora fatto, ma sono interessato a farlo anche io! – Newbie

risposta

17

L'etichettatura è così comune che le implementazioni sono una merce. Credo che "acts as taggable on" sia in genere il modo migliore per implementare i tag.

Vedere altre soluzioni popolari here.

Se si desidera implementare da soli, è possibile immergersi nel codice sorgente per trovare alcune idee.

0

Err, come al solito? Aggiungi un'entità Tag, aggiungi has_many :tags nell'entità Post. Quindi migrare. Questo sarebbe tutto.

+0

L'ho fatto ed emigrato. Sono abbastanza nuovo per has_many e appartiene_to. Potresti anche spiegarmi come posso implementarlo nel mio controller e visualizzare? Grazie! –

+1

Leggi la risposta di molf. – F0RR

1

Suggerirei di creare un modello Tag e di utilizzare has_and_belongs_to_many per assegnare tag ai post. Non so se la funzione scaffold ti aiuterà a creare un modulo per questo, ma non dovrebbe essere difficile aggiungerlo tu stesso. Suggerisco anche di usare il plug-in formtastic in quanto è molto più facile e bello creare forme con esso.