# Titlezilla Ultimate solution for dealing with titles in Rails. ## Installation Add this line to your application's Gemfile: gem 'titlezilla' And then execute: $ bundle Run the generator: rails generate titlezilla:install ## Usage ### Basics Put your titles in generated .yml file: en: titles: application: My Application welcome: index: Welcome page title users: show: User: %{user} Use convenient methods in your helpers: # Assuming you are on welcome#index page: application_title # => My Application title # => Welcome page title meta_title # => Welcome page title | My Application title_tag # => Welcome page title | My Application ### Passing variables to translations All defined instance variables passed to translations. YAML: en: titles: users: show: User: %{user} Model: class User < ActiveRecord::Base def to_s user.full_name end end Controller: def show @user = User.find(params[:id]) View: title # => User: John Doe ### Namespacing Namespaced controllers/views are supported, so you can have separate set of titles for different parts of your application. YAML: en: titles: application: My Application ... admin: application: Admin Panel dashboard: index: Dashboard View: # Assuming you are on admin/welcome#index page: application_title # => Admin Panel title # => Dashboard meta_title # => Dashboard | Admin Panel ### Action aliasing (:create and :update) Titleziila uses name of the current action for resolving titles, so when you submit a form and it fails to save, your rendered `new` template inside the `create` action. To avoid setting duplicated titles for both `new` and `create` (and `edit` and `update`), this actions is mapped in gem configuration. If your application have similar non-RESTful pair of actions, your can add them to mapping: config/initializers/titlezilla.rb: Titlezilla.configure do |config| config.action_map.merge!({perform_parse: :parse}) end Now you can define title only for `parse` action, `perform_parse` whil use it automagically. ### Custom meta title separator If you want your title tag content to look like this: `My Application > My cool page`, tell Titlezilla to use custom separator. config/initializers/titlezilla.rb: Titlezilla.configure do |config| config.separator = ' > ' end ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request