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>