Module: DynMeta::Helper

Defined in:
lib/dyn_meta.rb

Instance Method Summary collapse

Instance Method Details

#meta(name, interpolations = nil) ⇒ Object

allow setting, getting, and configuration of meta content. utilizes i18n and the current request to build meta content

Usage:

Request 1:
  meta(:page_title, "Some String") => "Some String"
  meta(:page_title) => "Some String"
Request 2:
  assuming t('meta.page_titles.[controller].[action].default') == "Some Page Title"
  meta(:page_title) => "Some Page Title"
Request 3:
  assuming t('meta.page_titles.[controller].[action].default') == "%{geo_name} Title"
  meta(:page_title, :geo_name => "Atlantis")
  meta(:page_title) => "Atlantis Title"
Request 4:
  assuming t('meta.page_titles.[controller].custom_action.default') == "Special Title"
  meta(:page_title, :alt => {:action => 'custom_action'}) => "Special Title"
  meta(:page_title) => "Special Title"


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/dyn_meta.rb', line 29

def meta(name, interpolations = nil)

  instance_name = "@dyn_meta_#{name}"

  return instance_variable_get(instance_name)                 if interpolations.nil? && instance_variable_get(instance_name)
  return instance_variable_set(instance_name, interpolations) if interpolations.is_a?(String)

  interpolations  ||= {}
  alt_params        = interpolations[:alt] || {}
  param_hash        = params.merge(alt_params)

  interpolations.except!(:alt)

  keys = ["#{meta_key}.#{name.to_s.pluralize}", "#{meta_key}.#{name.to_s.pluralize}.default"]

  [:controller, :action, :id].each do |param|
    key = param_hash[param]
    break if key.blank?
    prev = keys.first
    keys.unshift("#{prev}.#{key}.default")
    keys.unshift("#{prev}.#{key}")
  end

  val = meta_lookup(keys, interpolations)

  instance_variable_set(instance_name, val)
end