rails access view name inside partial

后端 未结 4 1090
梦谈多话
梦谈多话 2021-02-19 12:57

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

相关标签:
4条回答
  • 2021-02-19 13:07

    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)

    0 讨论(0)
  • 2021-02-19 13:13

    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']
    
    0 讨论(0)
  • 2021-02-19 13:15

    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
    
    0 讨论(0)
  • 2021-02-19 13:20

    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>
    
    0 讨论(0)
提交回复
热议问题