Never been to TextSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

« Newer Snippets
Older Snippets »
2 total  XML / RSS feed 

Acts as Taggable on Steroids: tag cloud rhtml + view helper

// description of your code here
controller layout (base) stylesheet update
  <%= stylesheet_link_tag 'scaffold', 'tag_cloud' %>


create stylesheet, put it in ./public/, name it tag_cloud.css or similar
/* tag_cloud styles*/
.nube1 {font-size: 1.0em;}
.nube2 {font-size: 1.2em;}
.nube3 {font-size: 1.4em;}
.nube4 {font-size: 1.6em;}
.nube5 {font-size: 1.8em;}
.nube6 {font-size: 2.0em;}


partial template call
        TAG CLOUD<br/>
        <%= render(:partial => "shared/article_tag_cloud", :locals => {:tags => @tags}) %>

view template code, as a partial or within index/show action template
        <% # For our purposes, have this filter the list of articles to those with the chosen tag
                tag_cloud true, tags, %w(nube1 nube2 nube3 nube4 nube5) do |name, css_class| %>
                <%= link_to name, tag_path(name), class => css_class # links to Tag resource, with tag name as 'id'
                %>
        <% end %>

helper code
        def tag_cloud(active, tags, classes)
                if !active then return end
                max, min = 0, 0
                unless tags.empty?
                        tags.sort! {|x,y| y.count <=> x.count}
                        max = tags.first.count
                        min = tags.last.count                      
                end
        
                divisor = ((max - min) / classes.size) + 1
        
                tags.each { |t|
                        yield t.name, classes[(t.count.to_i - min) / divisor]
                }
        end

acts_as_taggable_on_steroids migration

Run this when installing this plugin.

class AddTaggable < ActiveRecord::Migration
  def self.up
    create_table :tags, :force => true do |t|
      t.column :name, :string
    end

    create_table :taggings, :force => true do |t|
      t.column :tag_id, :integer
      t.column :taggable_id, :integer
      t.column :taggable_type, :string
      t.column :created_at, :datetime
    end

  end

  def self.down
    drop_table "tags"
    drop_table "taggings"
  end
end
« Newer Snippets
Older Snippets »
2 total  XML / RSS feed