Who is causing a partial to be rendered?

Is the a convenient programatic way for a partial to know what view (controller?) is causing it to be rendered?

For debugging purposes I want the partial to render the name of the view causing the partial to be rendered…


I think rack-mini-profiler
<https://github.com/MiniProfiler/rack-mini-profiler> should fit the bill.
It shows the queries you executed and layouts you rendered.

I've done stuff stuff like this to pass in, to say, a mailer view to know how it is being called. Some variation of that might work for you:

@mailer_name = caller_locations(1,1)[0].label

Hope that helps.


This is close to what I want, I think.

Where does the "@mailer_name = caller_locations(1,1)[0].label
" go? In a controller? In a view?

What I really want is to not have to modify the source modules that are invoking the rendering but, instead, have the _header.html.erb source module dynamically say “I got invoked by root.html.erb”.

Things get a bit more dicey, I think, if the sequence is
appllication.html.erb (authomagically invoked)