MetaManager

Enable meta tags in your model

Install

gem "meta_manager"

ActiveRecord:

require 'meta_manager/orm/active_record'

rake meta_manager_engine:install:migrations

Mongoid:

require 'meta_manager/orm/mongoid'

Usage

class Category < ActiveRecord::Base
  include MetaManager::Taggable
end

@category = Category.new
@category.tag_title = 'category test title'
@category.tag_keywords = "Some keywords"
@category.tag_description = "Some description"

@category.meta_tags.build(:name => "og:title", :content => 'category og:title')

# create dynamic meta tags, who will be overwrited the same category tag names 
# only with @meta_dynamic=true in controller
@category.meta_tags.build(:name => "og:title", :content => 'dynamic og:title - %{post.title}', :is_dynamic => true)
@category.meta_tags.build(:name => "title", :content => '%{post.title} - %{post.notes}', :is_dynamic => true)

@category.save

# create post for dynamic example
@post = Post.create(:title => 'post test title', :notes => 'post test notes')

Rendering example

At layouts/application.html.erb

<head>
<%= raw(render_meta_tags(@category)) %>
<title><%= render_page_title(@category) %></title>

At controllers/posts_controller.rb

before_filter :find_category
before_filter :prepare_dynamic_page, :only => [:show]

def index
  @posts = Post.order('id')
  respond_with(@posts)
end

def show
  @post = Post.find(params[:id])
  respond_with(@post)
end

protected

  def find_category
    @category = Category.first
  end

  # set @meta_dynamic true to turn on dymanic meta tags. 
  def prepare_dynamic_page
    @meta_dynamic = true
  end

It will be generate meta tags and title for @category. In action show we wont to generate dynamic meta tags from instance @post. It means that meta tag ‘og:title’ and tag ‘title’ will be overwrited with attributes from instance @post.

Results

Action index:

<meta content='Some keywords' name='keywords' />
<meta content='Some description' name='description' />
<meta content='category og:title' property='og:title' />
<title>category test title</title>

Action show:

<meta content='Some keywords' name='keywords' />
<meta content='Some description' name='description' />
<meta content='dynamic og:title - post test title' property='og:title' />
<title>post test title - post test notes</title>

Test

rake test

Copyright © 2012 Fodojo, released under the MIT license