rails访问部分内部的视图名称

时间:2012-01-13 05:48:10

标签: ruby-on-rails partial-views

我有一部分是我在不同的页面中使用的。我想根据呈现它的视图有条件地隐藏部分内部的某个div。

我正在考虑创建一个特定于页面的javascript文件,该文件将查找div并隐藏它。

但是,如果有一种方法可以检索部分内部的视图名称/页面名称,那么它将是部分内容的中心,并且不需要在多个页面中加载相同的javascript文件。

是否有人知道在部分

中执行此操作的方法

4 个答案:

答案 0 :(得分:17)

虽然@ wahaj的答案可行,但如果您想在中心位置执行所需操作,则可以检查部分中的controller_nameaction_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