JTRailsMeta

Gem Version

JTRailsMeta help you to manage HTML meta tags like title, description, keywords used in Search Engine Optimization (SEO).

Installation

JTRailsMeta is distributed as a gem, which is how it should be used in your app.

Include the gem in your Gemfile:

gem 'jt-rails-meta', '~> 1.0'

Create a meta.yml file for the translations:

rails g jt:meta

Usage

Basic usage

Include JT::Rails::Meta in your ApplicationController:

class ApplicationController < ActionController::Base
    include JT::Rails::Meta
    ...
end

Call meta_tags in your layout:

<!DOCTYPE html>
<head>
    <meta charset="UTF-8" />
    <%= meta_tags %>
</head>
<body>
</body>

You have also access to meta_title, meta_description, meta_keywords methods.

Define your meta in meta.yml file:

en:
  meta:
    # in general you use either prefx or suffix for the title of your page
    # prefix or suffix are not applied on default title and are both optional
    prefix: "My Website - "
    suffix: " - My Website"

    # default meta used if no meta are found for a page
    default:
      title: My WebSite
      description: My super website is about something magnificent
      keywords: "website, some keywords"

    # Exemple of meta for the controller users and the action new
    # title, full_title, description and keywords are all optional
    users:
      new:
        title: Sign up
        description: Description of sign up page
        keywords: "sign up, registration"

    # Another example for the controller home and the action index
    # full_title is used if exceptionally you don't want to use the prefix or suffix
    # you can use either title or full_title
    home:
      index:
        full_title: Home
        description: Description of homepage

Pass parameters to tags

In your controller:

class PostsController < ApplicationController
  def show
    @post = Post.find(params[:id])

    set_meta_title({ title: @post.title })
    set_meta_description({ title: @post.title, author: @post.author })
    add_meta_keywords(@post.tags.map(&:name))
  end
end

In your meta.yml file:

en:
  meta:
    posts:
      show:
        title: "%{title}"
        description: "Post about %{title} by %{author}"

Add more tags

You can add more tags with add_meta_extra and add_meta_link methods:

add_meta_extra 'robots' => 'noindex,nofollow'
add_meta_extra { 
        twitter: {
            site: '@mywebsite',
            domain: 'mywebsite.com',
            title: meta_title,
            description: meta_description,
            image: [
                'http://mywebsite.com/image_1.jpg',
                'http://mywebsite.com/image_2.jpg'
            ]
        }
    }

add_meta_link 'author', 'https://github.com/jonathantribouharet'
add_meta_link 'publisher', 'https://github.com/jonathantribouharet'

There is some methods already created using add_meta_link method:

  • add_meta_link_canonical which is equivalent to add_meta_link 'canonical'
  • add_meta_link_author which is equivalent to add_meta_link 'author'
  • add_meta_link_publisher which is equivalent to add_meta_link 'publisher'
  • add_meta_link_alternate which is equivalent to add_meta_link 'alternate'

Author

License

JTRailsMeta is released under the MIT license. See the LICENSE file for more info.