Ruby on rails 如何隐藏或删除菜单项?

Ruby on rails 如何隐藏或删除菜单项?,ruby-on-rails,erb,menu-items,Ruby On Rails,Erb,Menu Items,我有以下创建导航项列表(菜单)的代码片段: 当我未登录时,菜单显示为: 登录帮助 当我登录时,它显示为 登录帮助主页 登录后,我想: 隐藏或删除登录菜单项并 重新排列其余的菜单项,使Home位于第一位,而Help位于第二位 你可以做一个if-else语句来帮助你 <ul class="nav"> <% if logged_in? %> <li><%= link_to "Home", root_path %></li&g

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

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

登录
帮助

当我登录时,它显示为

登录
帮助
主页

登录后,我想:

  • 隐藏或删除
    登录
    菜单项并
  • 重新排列其余的菜单项,使
    Home
    位于第一位,而
    Help
    位于第二位

  • 你可以做一个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>
    

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

    <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检查已登录的用户,如果已登录,将返回
  • 主页,如果未登录,将返回登录


    最后一个
  • 将始终显示,无论用户是否登录

    以上答案是正确的,但它的旧方法,您可以在没有if-else条件的情况下执行。rails提供内置的助手。 请检查下面的代码。 您可以根据需要安排菜单

    未测试

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

    如果它不起作用,请告诉我

    也许我不清楚你在问什么,但是为什么隐藏“登录”链接比隐藏“主页”链接更复杂,而你已经在这么做了?如果“主页”链接仅在您登录时显示,并且您希望在登录时显示在“帮助”链接之前,只需将其移动到“帮助”链接之前即可。(我假设丢失的
    end
    标记只是一个复制错误)我实际上没有隐藏“Home”链接。有一个部分视图_header.html.erb,其中包含代码。IF语句控制根据登录状态显示的内容。但是,一旦登录,“登录”链接将继续显示(不应该显示,因为用户已经登录)。如果我能够删除“主页”和“帮助”,我应该能够重新排列它们,这样第二部分就不那么难了。前两部分设置为显示用户是否登录,因此无论发生什么情况,它们都会显示。
    链接到\u,除非
    始终返回文本。只需有条件地创建链接。因此,在这种情况下,如果用户已登录,您仍将看到纯文本
    登录
    ,而不显示link@DeepakMahakale我添加了一个空白块,因此它不会显示任何链接或文本。您可以测试它:)
    <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>