Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Partial Path Customizer

Build Status

Partial Path Customizer allows you to override #to_partial_path for a Rails model at runtime. Here is the original blog post about customizing #to_partial_path in Rails.

Installation & Upgrading

This gem is a railtie and is meant to be used with Rails. It is tested with versions of Rails down to 3.2.

Partial Path Customizer is recommended to be run as a gem and included in your Gemfile:

gem 'partial_path_customizer'

Helper

Partial path customizers provides a helper method to automatically set the partial path for the object you want to render. Here is how you would render an object normally.

<%= render @bike %>

This would render the bikes/bike partial. Now if you want to customize the partial path, use the customize_partial_path like this.

<%= render customize_partial_path(@bike, 'summary') %>

This renders the bikes/summary partial instead. The partial path with this helper is generated by the object's model_name pluralized.

Heterogenous collections

This is also very useful for rendering heterogenous collections with custom partial paths. For example, if you have this collection:

# Somewhere in the controller
@listings = [Bike.new, Wheelset.new, Bike.new]

and render it like this

<%= render @listings %>

it will render the partials bikes/bike, wheelsets/wheels, and bikes/bike. If you would like the partial names to to be rendered like bikes/summary, wheelsets/summary, and bikes/summary, you can do this

<%= render customize_partial_path(@listings, 'summary') %>

Customizing partial_path generation

If you need to further customize how the partial path is generated, you can pass a callable object in as the second argument. The callable object will receive a reference to the model when it's #call method is called.

<%= render customize_partial_path(@bike, ->(model){ "#{model.class.model_name.singular}/#{model.status}_summary" })

That would allow you to generate a partial path like bike/sold_summary.

Note: This is a low-level API and the higher level customize_object_partial_path(<object>, <partial_name>) should be used in most cases.

Credits

Animas Code Labs

Partial Path Customizer is maintained and funded by Animas Code Labs.

The names and logos for Animas Code Labs are trademarks of Animas Code Labs, LLC.

License

Partial Path Customizer is Copyright © 2014 Animas Code Labs. It is free software, and may be redistributed under the terms specified in the LICENSE file.

About

Easily override #to_partial_path on Rails models

Resources

License

Packages

No packages published