acts-as-taggable-on(tags管理的rails gem)
- 安装
gem 'acts-as-taggable-on', '~>3.4'
然后bundle install
- 安装迁移
rake acts_as_taggable_on_engine:install:migrations
- 如果使用
mysql
数据库,需要在任何一个initializer
文件中(比如config/initializers/assets.rb
添加一行ActsAsTaggableOn.force_binary_collation = true
rake acts_as_taggable_on_engine:tag_names:collate_bin
-
model
文件(blog.rb
)中增加acts_as_taggable # Alias for acts_as_taggable_on :tags
这样就能使用
@blog.tag_list
等方法了。 -
controller
文件(blogs_controller.rb
)中增加一个的tag_list
的strong params
def blog_params params.require(:blog).permit(:title, :content, :is_open, :tag_list) end
-
在
views
文件中增加tag_list
相关的代码,比如这样<%= f.input :tag_list, label: 'tags', placeholder: "输入tags,用‘,’分开." %>
-
在
blogs_controller.rb
中可以保存tag_list
相关的数据了@blog = Blog.new(blog_params) @blog.tag_list.add(blog_params[:tag_list], parse: true)
其中
parse: true
参数支持多个tag
,即将tag_list
中的字符串,用","
分割成多个tag
。
也可以用自定义的分割方式来进行处理. -
还可以使用
@blog.tag_list = "tag1,tag2,tag3,tag4"
直接重置tag_list
。相当于先把原来的tag_list
删掉再增加。再@blog.save
一下就OK了。
需要注意的是@blog.update
同时也更新了tag_list
,虽然blog
的attributes
中并没有tag_list
更多的用法直接看github: