module PageTitleHelper
Constants
- VERSION
Public Class Methods
formats()
click to toggle source
Defined alias formats, pretty useful.
# File lib/page_title_helper.rb, line 51 def self.formats @formats ||= { app: ':app', default: ':title - :app', title: ':title' } end
interpolates(key, &block)
click to toggle source
Add new, custom, interpolation.
# File lib/page_title_helper.rb, line 37 def self.interpolates(key, &block) Interpolations.send(:define_method, key, &block) end
options()
click to toggle source
Default options, which are globally referenced and can be changed globally, which might be useful in some cases.
# File lib/page_title_helper.rb, line 43 def self.options @options ||= { format: :default, default: :'app.tagline' } end
Public Instance Methods
page_title(options = nil) { || ... }
click to toggle source
# File lib/page_title_helper.rb, line 65 def page_title(options = nil) return page_title!(yield) if block_given? # define title options = PageTitleHelper.options.merge(options || {}).symbolize_keys! options[:format] ||= :title # handles :format => false options.assert_valid_keys(:app, :default, :format) # read page title and split into 'real' title and customized format title = @_page_title ||= page_title_from_translation(options[:default]) title, options[:format] = *(title << options[:format]) if title.is_a?(Array) # handle format aliases format = options.delete(:format) if PageTitleHelper.formats.include?(format) format = PageTitleHelper.formats[format] end # construct basic env to pass around env = { title: title, app: options.delete(:app), options: options, view: self } # interpolate format Interpolations.interpolate(format, env) end
page_title!(*args)
click to toggle source
Specify page title
# File lib/page_title_helper.rb, line 60 def page_title!(*args) @_page_title = args.size > 1 ? args : args.first @_page_title.is_a?(Array) ? @_page_title.first : @_page_title end
Protected Instance Methods
page_title_from_translation(default)
click to toggle source
Find translation for `controller.action.title` combination, falls back to `controller.title` or supplied default if no title was found.
# File lib/page_title_helper.rb, line 93 def page_title_from_translation(default) base = controller.controller_path.tr('/', '.') action = params[:action].to_s keys = [:"#{base}.#{action}.title"] keys << :"#{base}.new.title" if action == 'create' keys << :"#{base}.edit.title" if action == 'update' keys << :"#{base}.title" keys << default I18n.translate(keys.shift, default: keys) end