我在我的rails应用程序中使用devise gem进行身份验证。我希望能够隐藏我的导航栏部分,如果用户是在一个特定的设计动作和视图。例如,如果用户当前使用的是devise sessions new,我想隐藏部分导航栏。我该如何做到这一点呢?
提前谢谢你!
发布于 2018-02-22 16:05:23
您可以使用devise_controller?
帮助器。Docs
<%= if devise_controller? %>
<!-- show partial -->
<% end %>
如果要检查特定的控制器,请使用request.controller
<%= if request.controller == 'devise/registrations' %>
<!-- show partial -->
<% end %>
发布于 2018-02-22 16:01:13
您可以使用:
<%= controller.name %>
<%= controller.action_name %>
此外,还有:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
上面的所有结构都让你知道你现在在视图/partial中路由的位置。就我个人而言,我建议你使用它,但如果你应该呈现导航栏,那么你可以定义映射和条件获取的帮助程序中的逻辑。
发布于 2018-02-22 15:34:57
in layouts
it will control user and guest folder
_nav.html.erb
<% if !user_signed_in? %>
<%= render '/layouts/nav_guest' %>
<% else %>
<%= render '/layouts/nav_user'%>
<%end%>
_nav.user.html.erb
show user navbar in this folder
_nav.guest.html.erb
show guest navbar in this folder
https://stackoverflow.com/questions/48930548
复制