step1:安装gem
把下面这句话放入Gemfile中
|
|
step2.在终端(terminal)中执行
|
|
这会生成tags和taggings这两张表。在schema.rb中可以查看。
step3.在自己需要加标签的model中加入
|
|
在rails console中可以执行看看效果
|
|
执行结果:
|
|
新增时tag_list是一个以逗号相隔的string(字符串),在新增tag的时候,只需填入tag的名称,以逗号相隔做成字符串,后面的一系列操作这个gem自动都给你处理了。
(会通过taggings这个表连接tags和posts的关系,而且仔细看tags的表结构可以看到name: “index_tags_on_name”, unique: true,也就是tags的name字段是唯一的,所以不会重复添加同名的标签)
step4:post_controller
在新增post的时候,把tag_list加入Strong Parameters(强校验)
|
|
step5.配置路由
config/routes.rb
|
|
step6. 以下是view,可以参考一下
app/views/posts/_form.html.erb (在新增post时候加入tag_list即可。如果想做成下拉框select标签时,请注意,强校验不会接受hash类型,并且tag_list也只能是逗号相隔的字符串才行,所以,要在强校验之前,把tag_list处理成相应格式)
|
|
app/controllers/tags_controller.rb
|
|
app/views/acts_as_taggable_on/tags/_tag.html.erb
|
|
app/views/tags/index.html.erb
|
|
app/views/tags/show.html.erb
|
|
app/views/posts/_post.html.erb
|
|
app/views/posts/index.html.erb
|
|
app/views/posts/index.html.erb
|
|
app/views/posts/show.html.erb
|
|
补充:
|
|
用这个筛选掉已经关注的的tags(在这个地方纠结,想通过Tag.all-@tags,但是没有成功。有可能是@tags gem做了什么关联,查出来的对象不一致,或者是不能用减做对象的集合操作,有待查证)
|
|
新增单个标签
|
|
新增多个标签,参数是数组形式时
|
|