Skip to content

mnelson/dyn_meta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DynMeta

Automate the lookup of page meta information based on the current request context. Meta information such as page titles and descriptions can be stored in a translations file rather than floating around in controllers or views.

Usage

Add DynMeta::Helper to your app:

# application_controller.rb
helper DynMeta::Helper

Set up your translations as follows:

en:
  meta:
    <meta key pluralized>:
      <controller>:
        <action>:
          <id>: "Some meta value"

For example:

en:
  meta:
    titles:
      users:
        new: "Create Your Account"
        edit: "Update Your Account"

You usually won't go down to the id level but occasionally it's useful:

en:
  meta:
    titles:
      pages:
        show:
          tos: "Terms of Service"
          pp: "Privacy Policy"
          about: "About My Site"

You can define catch-alls via the default key:

en:
  meta:
    titles:
      default: "My Super Site"
      users:
        default: "Manage Your Account"
        new: "Create Your Account"
        edit: "Update Your Account"

DynMeta provides one method meta. It's both a setter and a getter. Just use the meta method in your template:

<title><%= meta(:title) %></title>
<meta name="description" content="<%= meta(:description) %>" />

If you'd like to override meta content you can just pass a value to the meta method:

def show
  @user = User.find(params[:id])
  meta(:title, "#{@user.display_name} :: Profile")
end

You can also provide interpolations via the meta method rather than overriding entire locales:

def show
  @user = User.find(params[:id])
  meta(:title, :name => @user.display_name})
end

About

Automate the lookup of page meta information based on the current request

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages