我有以下代码段,这些代码创建了一个导航项列表(一个菜单):
<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
登录后,我想:
log in
菜单项,然后Home
在前,Help
在后。答案 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>
让我知道它是否不起作用