如何隐藏或删除菜单项?

时间:2018-07-19 01:36:03

标签: ruby-on-rails erb menu-items

我有以下代码段,这些代码创建了一个导航项列表(一个菜单):

<ul class="nav">
  <li><%= link_to "Log in", login_path %></li>
  <li><%= link_to "Help", help_path %></li>
  <% if logged_in? %>
  <li><%= link_to "Home", root_path %></li>
</ul>

当我没有登录时,菜单显示为:

  

Log in Help

我登录后显示为

  

Log in Help Home

登录后,我想:

  1. 隐藏或删除log in菜单项,然后
  2. 重新排列其余菜单项,以使Home在前,Help在后​​。

3 个答案:

答案 0 :(得分:1)

您只需要正确安排它们并正确使用条件

<ul class="nav">
  <% if logged_in? %>
    <li><%= link_to "Home", root_path %></li>
  <% else %>
    <li><%= link_to "Log in", login_path %></li>
  <% end %>
  <li><%= link_to "Help", help_path %></li>
</ul>

说明:

第一个if-else将检查已登录的用户,如果登录则返回<li> 首页,如果未登录则返回登录

无论用户是否登录,始终显示最后的<li>

答案 1 :(得分:0)

您可以在if else语句中为您提供帮助。

<ul class="nav">
  <% if logged_in? %>
    <li><%= link_to "Home", root_path %></li>
  <% else %>
    <li><%= link_to "Log in", login_path %></li>
    <li><%= link_to "Help", help_path %></li>
  <% end %>
</ul>

答案 2 :(得分:0)

以上答案是正确的,但是它的旧方法可以在没有其他条件的情况下进行。 rails提供内置的link_to_unless帮助器。 请检查以下代码。 您可以根据需要安排菜单。

未测试

<ul class="nav">
  <li><%= link_to_unless(logged_in?, 'Log in', login_path){} %></li>
  <li><%= link_to "Home", root_path %></li>
  <li><%= link_to "Help", help_path %></li>
</ul>

让我知道它是否不起作用