Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 渲染布局而不在Rails中加载其内部布局_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 渲染布局而不在Rails中加载其内部布局

Ruby on rails 渲染布局而不在Rails中加载其内部布局,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我试图在我的html页面中引入一个布局 render layout 'flatty' 事情是这样加载整个flatty布局。在flatty.html.erb中,它呈现\u页眉,\u页脚,以及\u侧边栏.html.erb 我不想在此特定页面中加载\u sidebar.html.erb。 那么我应该如何渲染它呢?也许在控制器操作中,可以有一个标志指示不应该渲染侧边栏。然后,在flatty.html.erb文件中,在呈现\u sidebar.html.erb之前检查标志变量 例如,如果您有一个名为fl

我试图在我的html页面中引入一个布局

render layout 'flatty'
事情是这样加载整个
flatty
布局。在
flatty.html.erb
中,它呈现
\u页眉
\u页脚
,以及
\u侧边栏.html.erb
我不想在此特定页面中加载
\u sidebar.html.erb

那么我应该如何渲染它呢?

也许在控制器操作中,可以有一个标志指示不应该渲染侧边栏。然后,在
flatty.html.erb
文件中,在呈现
\u sidebar.html.erb
之前检查标志变量

例如,如果您有一个名为
flatty
的控制器操作,请添加一个实例变量
@disable\u sidebar
,作为您的标志

def flatty
  @disable_sidebar = true
  # Your other code
  render layout: 'flatty'
end
然后,在
flatty.html.erb
中,在侧边栏的
渲染
之前添加一个条件(注意
if
语句中的
否定:

<% if !@disable_sidebar %>
  <%= render "layouts/sidebar" %>
<% end %>

也许在控制器操作中,可以有一个标志指示不应渲染侧栏。然后,在
flatty.html.erb
文件中,在渲染
\u sidebar.html.erb
之前检查标志变量

例如,如果您有一个名为
flatty
的控制器操作,请添加一个实例变量
@disable\u sidebar
,作为您的标志

def flatty
  @disable_sidebar = true
  # Your other code
  render layout: 'flatty'
end
然后,在
flatty.html.erb
中,在侧边栏的
渲染
之前添加一个条件(注意
if
语句中的
否定:

<% if !@disable_sidebar %>
  <%= render "layouts/sidebar" %>
<% end %>
这会加载整个flatty布局。在flatty.html.erb中,它会呈现_header、_footer和_sidebar.html.erb。我不想在这个特定页面中加载_sidebar.html.erb

如果有这么多更改,为什么要使用相同的布局?为什么不制作一个在两种情况下都可以渲染的部分。制作一个新的部分,例如_common.html.erb,在平面布局中渲染,并查看要使用它的动作。

这会加载整个flatty布局。在flatty.html.erb中,它会呈现_header、_footer和_sidebar.html.erb。我不想在这个特定页面中加载_sidebar.html.erb

如果有这么多更改,为什么要使用相同的布局?为什么不制作一个在两种情况下都可以渲染的部分。制作一个新的部分,例如_common.html.erb,在平面布局中渲染,并查看要使用它的动作。


rails 4提供控制器名称和动作名称帮助器,因此您不需要检查参数,或者更好地在某些部分中将其分离出来并在这两种情况下进行渲染rails 4提供控制器名称和动作名称帮助器,因此您不需要检查参数,或者更好地在某些部分中将其分离出来并在这两种情况下进行渲染
 #flatty.html.erb
<%= if controller_name == "some_controller_name" && action_name == "some_action_name"
  <%= render "sidebar" %>
<% end %>