-1

我有以下代码片段,用于创建导航项列表(菜单):

<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下一个。
4

3 回答 3

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>无论用户是否登录,最后都会始终显示

于 2018-07-19T04:06:44.533 回答
1

上面的答案是正确的,但它的旧方法,你可以在没有 if else 条件的情况下做到这一点。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>

让我知道它是否不起作用

于 2018-07-19T04:07:49.380 回答
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>
于 2018-07-19T03:51:04.687 回答