检查当前的设计操作和视图

Check if current devise action and view

我在 rails 应用程序中使用设计 gem 进行身份验证。如果用户正在进行特定的设计操作和视图,我希望能够隐藏我的部分导航栏。例如,如果用户当前处于新的设计会话中,我想隐藏我的导航栏部分。我将如何做到这一点?

提前致谢!

 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

您可以使用:

<%= controller.name %>
<%= controller.action_name %>

还有:

<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>

上面的所有结构让您知道您现在在 view/partial 的路由方式中的位置。就个人而言,我建议您使用它,但是将逻辑从帮助器中的视图中取出,您可以在其中定义映射和条件以获取是否应该呈现导航栏。

您可以使用 devise_controller? 助手。 Docs

<%= if devise_controller? %>
  <!-- show partial -->
<% end %>

如果要检查特定控制器,请使用 request.controller

<%= if request.controller == 'devise/registrations' %>
  <!-- show partial -->
<% end %>