Just a quick post about a cool Rails feature you might not know about – #to_partial_path
In the app we’re currently working on, we have the concept of a Reference, which can either be given or requested. We want to render a different partial for the different types, so a first pass in our view template might look like this:
if @reference.requested?
render "reference/requested"
elsif @reference.given?
render "reference/given"
end
However, ActiveRecord models come with a #to_partial_path
method baked in, so instead we can just have:
render @reference
Behind the scenes, ActionView will call #to_partial_path
on our model, which we can override to contain all our logic:
def to_partial_path
if requested?
"reference/requested"
elsif given?
"reference/given"
else
super
end
end
Of course, your objects don’t have to be ActiveRecord models – just something that responds to #to_partial_path
.
Hope you find this useful!
Photo credit: Bairdzpics