Browse the Ruby on Rails Community.

You are here: Browse Railsplugins Acts As Machinetaggable

Acts As Machinetaggable

Allows for user owned machinetags to be added to multiple classes, and makes machinetags easier to work with.

Prerequisites

Install Edge Rails before you get started so you get RESTful routing.

ActsAsMachineTaggableRedux depends on database tables to store machinetagging information. Create the migration for these tables with this command:

rake acts_as_machinetaggable: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_machinetagger

OPTIONAL: The helper functions assume the pressence of a machinetags controller, that is what the machinetag clouds and machinetags will link to.

OPTIONAL: To pretty up machinetag clouds and lists you can generate an example stylesheet with this command:

rake acts_as_machinetaggable:stylesheet:create

and then include this in your layouts that have machinetag clouds:

<%= stylesheet_link_machinetag 'acts_as_machinetaggable_stylesheet' %>

Example

The following is an example of how you might integrate machinetags with an Item model.

config/routes.rb may.resource :items, :machinetags

app/views/items/new.erb New Item

<% form_for(:item, @item) do |f| -%>
<%= error_message_for :item %>
MachineTags: <= f.text_field :machinetag_list ->
<= submit_machinetag "Save" ->
<% end -%>

if you want users to own machinetaggings change the machinetags line to this MachineTags: <= f.text_field :machinetag_list, :value => @item.machinetag_list(user) -> and add this line beneath it <= f.hidden_field :user_id, :value => user.id ->

app/views/items/show.erb Item machinetagged with: <% item.machinetags.each do |machinetag| -%> <%= link_to_machinetag(machinetag) %> <% end -%>

app/views/items/edit.erb New Item

&lt;% form_for(:item, @item, :html => { :method => :post }) do |f| -%>
&lt;%= error_messages_for :item %>
MachineTags: &lt;= f.text_field :machinetag_list ->
&lt;= submit_machinetag "Save" ->
&lt;% end -%>

app/controllers/items_controller.rb class ItemController < ApplicationController def new @item = Item.new end

def create
    @item = Item.new(params[:item])
end
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 => :machinetags)
end
def edit
  @item = Item.find(params[:id])
end
def update
  @item = Item.find(params[:id])
end
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

MachineTag clouds

MachineTag 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 machinetags to a machinetaggable in any way other than using the machinetag.machinetag(machinetaggable) style. This will ensure that the caches don’t lose track. Also, see the prerequisites for installing the stylesheet so that the machinetag cloud actually looks like a machinetag cloud. Otherwise, just pop into a view that you want the machinetag cloud to appear and type this:

&lt;%= machinetag_cloud %>

Copyright© 2007 monki(Wesley Beary), released under the MIT license Copyright© 2008 aroedl(Andreas Roedl), released under the MIT license

NOTE: This description has been extracted from the Plugin README and so the formatting may need updating to make browser friendly

Users


See all details


Membership

+ Join this railsplugin

Record Maintainer

'None'