Lotus::Helpers
View helpers for Ruby applications
Status
Contact
- Home page: http://lotusrb.org
- Mailing List: http://lotusrb.org/mailing-list
- API Doc: http://rdoc.info/gems/lotus-helpers
- Bugs/Issues: https://github.com/lotus/helpers/issues
- Support: http://stackoverflow.com/questions/tagged/lotus-ruby
- Chat: https://gitter.im/lotus/chat
Rubies
Lotus::Helpers supports Ruby (MRI) 2+ and JRuby 1.7 (with 2.0 mode).
Installation
Add this line to your application's Gemfile:
gem 'lotus-helpers'
And then execute:
$ bundle
Or install it yourself as:
$ gem install lotus-helpers
Usage
Lotus::Helpers offers a set of utilities to enrich web views.
HTML helper
HTML5 markup generator (#html).
View:
module Users
class Show
include Lotus::Helpers
def
html.aside(id: 'sidebar') do
p "Languages", class: 'title'
ul do
li "Italian"
li "English"
end
end
end
end
end
Template:
<%= sidebar %>
Output:
<aside id="sidebar">
<p class="title">Languages</p>
<ul>
<li>Italian</li>
<li>English</li>
</ul>
</aside>
Escape helper
HTML (#h), HTML attribute (#ha) and URL (#hu) escape helpers.
View:
module Users
class Show
include Lotus::Helpers
def home_page_link
%(<a href="#{ hu(user.home_page_url) }" title="#{ ha(user.name} }'s website">#{ h(user.website_name) }</a>)
end
def code_snippet
raw user.code_snippet
end
end
end
Template:
<%= home_page_link %>
<%= code_snippet %>
Output:
<a href="https://example.org" title="Maria's website">My Blog</a>
<code>puts "Hello, World!"</code>
Routing helper
Lotus and Lotus::Router integration (#routes).
View:
module Home
class Index
include Lotus::Helpers
def link_to_home
%(<a href="#{ routes.home_path }">Home</a>)
end
end
end
Template:
<%= link_to_home %>
Output:
<a href="/">Home</a>
Philosophy
All the Lotus helpers are modules to include.
Most of the time they inject private methods. This restriction prevents helper methods to be used on the outside (eg. in a template).
We want to encourage developers to use meaningful and simple APIs in their templates.
Bad style example
module Users
class Show
include Lotus::Helpers
end
end
<%= format_number user.followers_count %>
This style increases the complexity of the template and it makes testing hard.
Good style example
module Users
class Show
include Lotus::Helpers
def followers_count
format_number user.followers_count
end
end
end
<%= followers_count %>
This simplifies the markup.
In order to test the value that will be printed becomes easier: Users::Show#followers_count.
Versioning
Lotus::Helpers uses Semantic Versioning 2.0.0
Contributing
- Fork it ( https://github.com/lotus/helpers/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Copyright
Copyright © 2014-2015 Luca Guidi – Released under MIT License