Adding tags to posts in Ruby on Rails

2019-02-08 22:46发布

问题:

I am creating a blog in Rails using Scaffolding. I want to add a 'tags' field on each post like on StackOverflow and WordPress. I can do this with the string type ( rails generate scaffold post title:string body:text tags:string ) and then comma separated, but it's not good practice since I want the reader to browse by tags ( e.g. /tags/web20 or /tags/lol ). How can I do this?

回答1:

Tagging is so common that implementations are a commodity. I believe "acts as taggable on" is usually the preferred way of implementing tags.

See other popular solutions here.

If you wish to implement it yourself, you could dive into the source code to find some ideas.



回答2:

I would suggest creating a Tag model and using has_and_belongs_to_many to assign tags to posts. I don't know if the scaffold feature will help you create a form for that, but it shouldn't be difficult to add it yourself. I also suggest using the formtastic plugin as it's much easier and nicer to create forms with it.



回答3:

Err, the usual way? Add Tag entity, add has_many :tags in your Post entity. Then migrate. That would be all.