I have a partial that I am using in different pages. I want to conditionally hide a certain div inside the partial based on the view that is rendering it.
I was thinkin
While @wahaj's answer would work, if you want to do what you need in a central location, you could check the controller_name
and action_name
variables in the partial to determine the view you're in (e.g. controller_name == "services"
and action_name == "show"
would let you know you're in the Show view for the Service controller)
you can get the name of the currently-rendering partial from within a Helper method with the following :
controller.view_context.view_renderer.instance_variable_get('@_partial_renderer').instance_values['path']
simple solution , inside your partial check if you need to show partial or not
_partial_name.html.erb
<%= content_tag :div, :style=> "display : #{show_div? ? 'block' : 'none'}" do%>
html...or other stuff
<%end%>
and then in application helper
app/helper/application_helper.rb
def show_div? #you can set name of your div like 'show_sidebar_div?'
#decide either show this div or not
action_name == 'show'
end
You could send the style parameter as a local variable to the partial, varying the parameter depending on where you're calling from. Something like:
render :partial => 'xyz', :locals => {:style => 'display:none or display:block'}
and in the partial you could do:
<div style=<%=style%>></div>