`
kyoleelqh
  • 浏览: 17749 次
  • 性别: Icon_minigender_1
  • 来自: 广东汕头
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用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方法.
3
1
分享到:
评论
3 楼 shaka 2009-06-10  
取到的tags如何拆开,如p.tag_list = "hebe, selina",想取单独的每个tag,却怎么也取不到
2 楼 kyoleelqh 2009-03-07  
jshmemory 写道

你这样子能运行出来吗??好像这样会报错吧...

哪里报错
1 楼 jshmemory 2009-02-21  
你这样子能运行出来吗??好像这样会报错吧...

相关推荐

    acts_as_authenticated

    "acts_as_authenticated" 是一个经典的Ruby on Rails插件,它为Rails应用提供了用户认证功能。在Rails框架中,用户认证通常涉及验证用户身份、管理会话以及处理登录和登出等操作。acts_as_authenticated插件简化了这...

    acts_as_list.rar

    acts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_...

    acts-as-taggable-array-on:使用PostgreSQL数组的Rails一个简单而高性能的标记gem

    gem "acts-as-taggable-array-on" 然后执行: bundle 设置 要使用它,您需要具有一个数组列以充当taggable- tags 。 class CreateUser &lt; ActiveRecord :: Migration def change create_table :users do | t...

    acts_as_paranoid

    "acts_as_paranoid" 是一个在Ruby on Rails框架中常用的gem,用于处理数据库记录的软删除(soft delete)。在数据库操作中,通常我们会遇到删除数据的需求,但直接删除可能会导致数据丢失,尤其是在生产环境中。...

    acts_as_list, 用于管理列表的ActiveRecord插件.zip

    acts_as_list, 用于管理列表的ActiveRecord插件 ActsAsList描述这个 acts_as 扩展提供了对列表中的多个对象进行排序和重新排序的功能。 具有指定的类的类需要在映射的数据库表上定义为整数的position 列。 0.8.0升级...

    用acts_as_rateable实现简单的打分功能

    在Ruby on Rails框架中,`acts_as_rateable`是一个非常实用的插件,它允许用户对模型进行评分,从而实现简单的打分功能。这个插件是Rails社区中的一个开源项目,旨在简化应用中的评分系统集成。在本篇讨论中,我们将...

    acts_as_category:想想acts_as_tree +权限

    #ActsAsCategory acts_as_category (Version 2.0 beta)acts_as_category,是acts_as插件在acts_as_tree风格的Ruby on Rails的ActiveRecord的模式,但有一些额外的功能,以及多种便捷视图助手。例子(有关实例方法和...

    ruby on rails 相关lib

    ruby on rails 相关lib 其中包含:rspec flexmock acts_as_taggable-2.0.2 widgets acts_as_list classic_pagination

    acts_as_nested_set的增强版BetterNestedSet

    acts_as_nested_set是Rails社区中广泛使用的Nested Set库,而BetterNestedSet则是它的增强版,提供了更多功能和优化。本文将深入探讨BetterNestedSet的原理、用法以及相较于acts_as_nested_set的优势。 1. Nested ...

    Api-acts_as_api.zip

    Api-acts_as_api.zip,使在rails中创建api响应变得简单和有趣,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了编程...

    acts_as_paranoid:ActiveRecord插件可让您隐藏和还原记录,而无需实际删除它们

    使徒行传 一个Rails插件来添加软删除。...用法安装gem: gem 'acts_as_paranoid' , '~&gt; 0.7.0' bundle install创建迁移bin/rails generate migration AddDeletedAtToParanoiac deleted_at:datetime:index启用ActsAs

    Ruby-ActsAsTaggableOnRails应用程序标签插件允许自定义标签在动态环境中

    在实际项目中, ActsAsTaggableOn 的源代码库(如 `mbleigh-acts-as-taggable-on-4d9a10c`)包含了详细的实现细节,包括测试用例、文档和示例。你可以通过阅读源代码了解其内部工作原理,以及如何根据项目需求进行...

    active_record-acts_as, 模拟activerecord模型的多表继承.zip

    active_record-acts_as, 模拟activerecord模型的多表继承 插件开发已经移动这个项目的积极发展已经转移到了的krautcomputing fork 。... ActiveRecord::ActsAs这是对 acts_as_relation的重构。模拟用于Acti

    rails_admin_acts_as_list:rails_admin插件以对记录进行排序

    用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须定义rails_...

    acts_as_xapian:Xapian全文搜索插件,适用于Ruby on Rails

    《acts_as_xapian:为Ruby on Rails打造的Xapian全文搜索引擎插件》 在Web开发领域,全文搜索引擎能够极大地提升用户对信息的检索效率,对于内容丰富的应用尤其重要。Ruby on Rails作为流行的Web框架,有着众多的...

    acts_as_aliased:扩展 ActiveRecord

    使用acts_as_aliased在模型中启用别名: model Company &lt; ActiveRecord::Base acts_as_aliased end 这假设您的公司模型中有一个名为name的列。 您可以通过传递column参数来指定不同的column : model ...

    acts_as_restful_list:就像acts_as_list一样,但很安静

    就像acts_as_list 一样,但不必使用非标准方法调用(如insert_at)来弄乱您的代码,acts_as_restful_list 使管理列表变得简单。 您可以像更新其他任何内容一样更新 position 属性,其余的都由您来处理。 特点 通过...

    Ruby-ActsAsTennant通过一个共享数据库的策略来为一个Rails应用添加多租户支持

    标签“Ruby开发-ORM/ODM框架”表明 Acts As Tenant 是一个对象关系映射(ORM)或对象数据映射(ODM)工具,用于在Ruby开发中处理数据库交互。ORM允许开发者用面向对象的方式操作数据库,而无需关注底层SQL语句,简化...

    acts_as_owner.rb:Rails 的简单所有权解决方案

    Acts as owner 是 Ruby on Rails 的一个插件,它为所有者对象提供了自我查询可拥有对象的所有权的能力。 可拥有对象可以是属于所有者对象的任何对象和属于可拥有对象的任何对象。 属于拥有的可拥有的父代的任何可...

Global site tag (gtag.js) - Google Analytics