show_for

by heartcombo

heartcombo / show_for

Wrap your objects with a helper to easily show them

458 Stars 50 Forks Last release: about 1 year ago (v0.7.0) MIT License 249 Commits 20 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

ShowFor

Gem Version Build Status Code Climate

ShowFor allows you to quickly show a model information with I18n features.










Installation

Install the gem:

gem install show_for

Or add ShowFor to your Gemfile and bundle it up:

gem 'show_for'

Run the generator:

rails generate show_for:install

And you are ready to go.

Note: This branch aims Rails 5 and 6 support, so if you want to use it with older versions of Rails, check out the available branches.

Usage

ShowFor allows you to quickly show a model information with I18n features.









Will generate something like:

Name
José Valim
Confirmed?
Yes
Created at
13/12/2009 - 19h17
Photo
Etiam porttitor eros ut diam vestibulum et blandit lectus tempor. Donec venenatis fermentum nunc ac dignissim. Pellentesque volutpat eros quis enim mollis bibendum. Ut cursus sem ac sem accumsan nec porttitor felis luctus. Sed purus nunc, auctor vitae consectetur pharetra, tristique non nisi.

You can also show a list of attributes, useful if you don't need to change any configuration:

Value lookup

ShowFor uses the following sequence to get the attribute value:

  • use the output of a block argument if given
  • use the output of the
    :value
    argument if given
  • check if a
    :"human_#{attribute}"
    method is defined
  • retrieve the attribute directly.

Options

ShowFor handles a series of options. Those are:

  • :format - Sent to

    I18n.localize
    when the attribute is a date/time object.
  • :value - Can be used instead of block. If a

    Symbol
    is called as instance method.
  • :if_blank - An object to be used if the value is blank. Not escaped as well.

  • :separator - The piece of html that separates label and content, overriding the global configuration.

In addition, all containers (

:label
,
:content
and
:wrapper
) can have their html options configured through the
:label_html
,
:content_html
and
:wrapper_html
options. Containers can have their tags configured on demand as well through
:label_tag,
:content_tag
and
:wrapper_tag
options.

Label

ShowFor also exposes the label method. In case you want to use the default

human_attribute_name
lookup and the default wrapping:
a.label :name                  #=> Name
a.label "Name", id: "my_name"  #=> Name

Optionally, if you want to wrap the inner part of the label with some text (e.g. adding a semicolon), you can do so by specifying a proc for

ShowFor.label_proc
that will be called with any label text. E.g.:
  ShowFor.label_proc = lambda { |l| l + ":" }

When taking this route, you can also skip on a per label basis by passing the

:wrap_label
option with a value of false.

Associations

ShowFor also supports associations.






</pre><li>

The first is a

has_one
or
belongs_to
association, which works like an attribute to ShowFor, except it will retrieve the artist association and try to find a proper method from
ShowFor.association_methods
to be used. You can pass the option :using to tell (and not guess) which method from the association to use.

:tags is a

has_and_belongs_to_many
association which will return a collection. ShowFor can handle collections by default by wrapping them in list (
    with each item wrapped by an
  • ). However, it also allows you to give
    :to_sentence
    or
    :join
    it you want to render them inline.

    You can also pass a block which expects an argument to association. In such cases, a wrapper for the collection is still created and the block just iterates over the collection objects.

    Here are some other examples of the many possibilites to custom the output content:

    
    
    
    
    

    Maintainers

    • José Valim (http://github.com/josevalim)
    • Carlos Antonio da Silva (https://github.com/carlosantoniodasilva)

    Contributors

    • Jonas Grimfelt (http://github.com/grimen)

    Bugs and Feedback

    If you discover any bugs or want to drop a line, feel free to create an issue on GitHub.

    http://github.com/heartcombo/show_for/issues

    MIT License. Copyright 2012-2019 Plataformatec. http://plataformatec.com.br

  • We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.