# Flutie
[![Build Status](https://travis-ci.org/thoughtbot/flutie.svg?branch=master)](https://travis-ci.org/thoughtbot/flutie)
Flutie provides some utility view helpers for use with Rails applications.
There are helpers for setting a page title and for generating body classes.
## Installation & Upgrading
Flutie is a Railtie. We support the versions of Ruby and Rails listed in
[.travis.yml](.travis.yml).
It should be run as a gem and included in your `Gemfile`:
```ruby
gem "flutie"
```
## Helpers
Flutie provides helper methods for use within Rails layouts and views.
### Page Title
The `page_title` method can be used like:
```erb
<%= page_title %>
```
By default, it will produce results like:
```html
Appname : page title
```
* "App name" comes from the module name of the rails application created by your
app, i.e. `Appname::Application` will produce "Appname"
* "page" comes from trying `content_for(:page_title)` and assumes you are using
`content_for` with `:page_title` symbol on your pages.
* The separator defaults to " : "
These can be overridden by passing an options hash including `:app_name`,
`:page_title_symbol` and `:separator` hash keys. For example:
```ruby
content_for(:site_page_title, 'My title of my page')
page_title(:app_name => 'My app name', :page_title_symbol => :site_page_title, :separator => " | ")
```
would produce:
```html
My app name | My title of my page
```
You can also reverse the position of the app name and the :site_page_title
using the :reverse option. For example:
```ruby
content_for(:site_page_title, 'My title of my page')
page_title(:app_name => 'My app name', :page_title_symbol => :site_page_title, reverse: true)
```
would produce:
```html
My title of my page : My app name
```
### Body Class
The `body_class` method can be used like this in a layout:
```erb
```
This will produce a string including the controller name and controller-action
name pair. For example, The `WidgetsController#show` action would produce:
```html
```
Anything which has been added via `content_for(:extra_body_classes)` will be
added to the end, for example views like:
```erb
content_for(:extra_body_classes, 'special-page')
```
would produce:
```html
```
## How to contribute
Please see the [CONTRIBUTING](CONTRIBUTING.md) file for details.
## Credits
![thoughtbot](http://thoughtbot.com/images/tm/logo.png)
Flutie is maintained and funded by [thoughtbot, inc].
Thank you to all [the contributors]!
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
## License
Flutie is Copyright © 2010 thoughtbot, inc. It is free software, and may be
redistributed under the terms specified in the [LICENSE](LICENSE) file.
[thoughtbot, inc]: http://thoughtbot.com/community
[the contributors]: https://github.com/thoughtbot/flutie/contributors