使用Acts As Taggable On Steroids定义标签

最近下载一个rails blog应用(Simplelog)并把它里面的acts_as_taggable plugin改为Acts As Taggable On Steroids,因为在rails2.0下总是运行出错.
1.安装

ruby script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids

2.建立数据
生成migration:

ruby script/generate acts_as_taggable_migration

生成数据:

rake db:migrate

3.应用:
假如有个Post Model,添加acts_as_taggable到Post里面:

class Post < ActiveRecord::Base
acts_as_taggable
......
end

使用acts_as_taggable提供的方法(tag_list, tag_list=):

p = Post.find(:first)
p.tag_list # []
p.tag_list = "hebe, selina"
p.save
p.tag_list # ["hebe", "selina"]

或者:

p.tag_list.add("selina", "hebe")
p.tag_list.remove("ella")

4.查找tag对象

Post.find_tagged_with('Hebe, Selina')

find_tagged_with默认查找任何给定的标签,如果要查找完全符合指定的标签,可用:

Post.find_tagged_with('Hebe, Selina', :match_all => true)

5.获取tags
因为我们指定acts_as_taggable到Post mdel,所以可以通过以下语句获取所有的Post标签:

Post.tag_counts

如果想指定某个用户的所有Post的所有标签:

User.find(:first).posts.tag_counts #User与Post已设定关联

Acts As Taggable On Steroids还提供一个TagsHelper:
首先在ApplicationHelper包含TagsHelper:

module ApplicationHelper
include TagsHelper
end

然后是Controller:

class PostController < ApplicationController
def tag_cloud
@tags = Post.tag_counts
end
end

and than View:

<% tag_cloud @tags, %w(css1 css2 css3 css4) do |tag, css_class| %>
<%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %>
<% end %>

6.标签Caching
使用标签caching可以提高请求的执行效率.要使用标签caching,必须增加一个叫cached_tag_list的字段,且默认值是null,而不是空字符.

class CachePostTagList < ActiveRecord::Migration
def self.up
add_column :posts, :cached_tag_list, :string
end
end

class Post < ActiveRecord::Base
acts_as_taggable

# 默认字段名是: cached_tag_list, 不过也可以改变:
set_cached_tag_list_column_name "my_caching_column_name"
end

注意:如果你建立tag,或者追加tag到关联的Post.那么被caching的标签是不会更新的,
必须调用save_cached_tag_list方法.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值