我有一部分是我在不同的页面中使用的。我想根据呈现它的视图有条件地隐藏部分内部的某个div。
我正在考虑创建一个特定于页面的javascript文件,该文件将查找div并隐藏它。
但是,如果有一种方法可以检索部分内部的视图名称/页面名称,那么它将是部分内容的中心,并且不需要在多个页面中加载相同的javascript文件。
是否有人知道在部分
中执行此操作的方法答案 0 :(得分:17)
虽然@ wahaj的答案可行,但如果您想在中心位置执行所需操作,则可以检查部分中的controller_name
和action_name
变量,以确定您所在的视图(例如controller_name == "services"
和action_name == "show"
会让您知道您在服务控制器的“显示”视图中)
答案 1 :(得分:6)
您可以使用以下方法从Helper方法中获取当前呈现部分的名称:
controller.view_context.view_renderer.instance_variable_get('@_partial_renderer').instance_values['path']
答案 2 :(得分:2)
您可以将style参数作为局部变量发送到partial,根据您调用的位置改变参数。类似的东西:
render :partial => 'xyz', :locals => {:style => 'display:none or display:block'}
,你可以做部分:
<div style=<%=style%>></div>
答案 3 :(得分:1)
简单的解决方案,在部分检查中是否需要显示部分
_partial_name.html.erb
<%= content_tag :div, :style=> "display : #{show_div? ? 'block' : 'none'}" do%>
html...or other stuff
<%end%>
然后在应用程序助手
中应用程序/助手/ 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