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

时间:2018-02-22 14:59:20

标签: ruby-on-rails ruby devise

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

提前多多感谢!

3 个答案:

答案 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