我在我的rails应用程序中使用devise gem进行身份验证。如果用户在特定的设计操作和视图上,我希望能够隐藏我的导航栏部分。例如,如果用户当前处于新的设计会话中,我想隐藏我的导航栏部分。我怎么做到这一点?
提前多多感谢!
答案 0 :(得分:2)
您可以使用:
<%= controller.name %>
<%= controller.action_name %>
还有:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
上面的所有结构都会让您知道您现在从视图/部分路由的方式。就个人而言,我建议你使用它,但是从帮助器中的视图中取出逻辑,你可以在其中定义映射和条件,以获取是否应该渲染导航栏。
答案 1 :(得分:2)
您可以使用devise_controller?
帮助器。 Docs
<%= if devise_controller? %>
<!-- show partial -->
<% end %>
如果您想控制特定控制器,请使用request.controller
<%= if request.controller == 'devise/registrations' %>
<!-- show partial -->
<% end %>
答案 2 :(得分:1)
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