我试图通过

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散列中的actionparams值,如果与该控制器的操作匹配,则不呈现侧边栏:
<% if params[:controller]!="YOUR_CONTROLLER" and !params[:action].eql? "flatty" %>
  <%= render "layouts/sidebar" %>
<% end %>

10-08 04:27