Ruby on rails 渲染布局而不在Rails中加载其内部布局
我试图在我的html页面中引入一个布局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
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 %>