acts_as_taggable_on_steroidsの使い方
インストールする(githubに引っ越してるから注意)
ruby script/plugin install git://github.com/jviney/acts_as_taggable_on_steroids.git ruby script/generate acts_as_taggable_migration rake db:migrate
Manualモデルというのをtaggableにするとして
Manualモデルには
acts_as_taggable
と書く。
routes.rbには
map.resources :manuals do |manual| manual.resources :tags, :collection => { :remove => :delete } end
と書く。
(/manuals/:manual_id/tags のURLで受け入れアクションが生成される。)
コントローラーはこんな感じ。
class TagsController < ApplicationController layout nil before_filter :load_manual def index @tags = @manual.tag_list end def create keys = params[:name].gsub(/ /," ").scan(/\S+/) @tags = @manual.tag_list.add(keys) @manual.save render :action => 'index' end def remove @tags = @manual.tag_list.remove(params[:name]) @manual.save render :action => 'index' end private def load_manual @manual = Manual.find(params[:manual_id]) end end
views/tags/index.html.erbはこんな感じ。
<div id="tag"> <% form_remote_tag :update => "tag", :url => manual_tags_url(@manual) do %> <h3>キーワード</h3> <div><%= text_field_tag 'name' %><%= submit_tag 'キーワードをつける' %></div> <% end %> <ul> <% @tags.each do |tag|%> <li><%=h tag %> <%= link_to_remote( '[削除]',:update => "tag", :url => remove_manual_tags_url(@manual,:name => tag), :method => :delete ) %> </li> <% end %> </ul> </div>
以上です。