-
-
Notifications
You must be signed in to change notification settings - Fork 18
/
README
149 lines (93 loc) · 4.12 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
ActsAsTaggableRedux
===================
Allows for user owned tags to be added to multiple classes, and makes tags easier to work with.
NOTE: this gem has not been updated for rails 3 and I'm not really maintaining it any more. If you would like to update and/or maintain please contact geemus, thanks!
Prerequisites
=============
Install Edge Rails before you get started so you get RESTful routing.
ActsAsTaggableRedux depends on database tables to store tagging information. Create the migration for these tables with this command:
rake acts_as_taggable:db:create
Then run the migration to create the tables with this command:
rake db:migrate
Also you will need to add this to your user model:
acts_as_tagger
Any models that will have tags applied to them should then have this added:
acts_as_taggable
OPTIONAL: The helper functions assume the pressence of a tags controller, that is what the tag clouds and tags will link to.
OPTIONAL: To pretty up tag clouds and lists you can generate an example stylesheet with this command:
rake acts_as_taggable:stylesheet:create
and then include this in your layouts that have tag clouds:
<%= stylesheet_link_tag 'acts_as_taggable_stylesheet' %>
Example
=======
The following is an example of how you might integrate tags with an Item model.
config/routes.rb
map.resource :items, :tags
app/views/items/new.erb
<h1>New Item</h1>
<% form_for(:item, @item) do |f| -%>
<%= error_message_for :item %>
<b>Tags:</b> <%= f.text_field :tag_list -%>
<%= submit_tag "Save" -%>
<% end -%>
if you want users to own taggings change the tags line to this
<b>Tags:</b> <%= f.text_field :tag_list, :value => @item.tag_list(user) -%>
and add this line beneath it
<%= f.hidden_field :user_id, :value => user.id -%>
app/views/items/show.erb
Item tagged with:
<% item.tags.each do |tag| -%>
<%= link_to_tag(tag) %>
<% end -%>
app/views/items/edit.erb
<h1>New Item</h1>
<% form_for(:item, @item, :html => { :method => :post }) do |f| -%>
<%= error_messages_for :item %>
<b>Tags:</b> <%= f.text_field :tag_list -%>
<%= submit_tag "Save" -%>
<% end -%>
app/controllers/items_controller.rb
class ItemController < ApplicationController
def new
@item = Item.new
end
def create
@item = Item.new(params[:item])
respond_to do |format|
if @item.save
flash[:notice] = 'Item was successfully created.'
format.html { redirect_to item_url(@item) }
format.xml { head :created, :location => item_url(@item) }
else
format.html { render :action => "new" }
format.xml { render :xml => @item.errors.to_xml }
end
end
end
def show
@item = Item.find(params[:id], :include => :tags)
end
def edit
@item = Item.find(params[:id])
end
def update
@item = Item.find(params[:id])
respond_to do |format|
if @item.update_attributes(params[:item])
flash[:notice] = 'Item was successfully updated.'
format.html { redirect_to item_url(@item) }
format.xml { head :updated, :location => item_url(@item) }
end
format.html { render :action => "edit"}
format.xml { render :xml => @item.errors.to_xml}
end
end
end
Tag clouds
==========
Tag clouds are created by a helper function, and depend on the counter cache to get fast accurate counts. To ensure this keeps working properly, don't add new tags to a taggable in any way other than using the tag.tag(taggable) style. This will ensure that the caches don't lose track. Also, see the prerequisites for installing the stylesheet so that the tag cloud actually looks like a tag cloud. Otherwise, just pop into a view that you want the tag cloud to appear and type this:
<%= tag_cloud %>
Contributing
============
Welcoming all pull requests on github.com at http://github.com/monki/acts_as_taggable_redux/tree/master or git://github.com/monki/acts_as_taggable_redux.git
Copyright (c) 2010 geemus(Wesley Beary), released under the MIT license