我试图通过
render layout 'flatty'
问题是这会加载整个
flatty
布局。在flatty.html.erb
中,它呈现_header
、_footer
以及_sidebar.html.erb
我不想在这个页面中加载
_sidebar.html.erb
。那我该怎么做呢?
最佳答案
也许在控制器操作中,可以有一个标志,指示不应呈现侧边栏然后,在flatty.html.erb
文件中,在呈现_sidebar.html.erb
之前检查flag变量。
例如,如果有一个名为flatty
的控制器操作,则添加一个实例变量@disable_sidebar
作为标志。
def flatty
@disable_sidebar = true
# Your other code
render layout: 'flatty'
end
然后,在
flatty.html.erb
中,在render
之前为侧边栏添加一个条件(注意!
语句中的if
否定:<% if !@disable_sidebar %>
<%= render "layouts/sidebar" %>
<% end %>
或者,在
flatty.html.erb
中,您也可以检查controller
散列中的action
和params
值,如果与该控制器的操作匹配,则不呈现侧边栏:<% if params[:controller]!="YOUR_CONTROLLER" and !params[:action].eql? "flatty" %>
<%= render "layouts/sidebar" %>
<% end %>