根据用户是否已创建个人资料更改导航栏链接 (RoR)

Changing nav-bar links according to whether a user has created a profile or not (RoR)

我正在制作一个 rails 应用程序,并创建了一个运行良好的简单导航栏。我已经设置并创建了一个配置文件模型,我希望用户在注册后创建该模型,并且(我相信)我已经正确地建立了必要的关联。

作为新用户首次登录,我希望使用 new_profile_path 在导航栏中显示 "Create profile" link,但一旦该特定用户登录已创建 his/her 配置文件,我希望 "create Profile" 更改为 "View Profile" 并永久保持这种状态,这应该重定向到 profile_path.

我目前在导航栏中的代码如下:

<ul>
         <li><%= link_to root_path do %>
                <i class="fa fa-home"></i>Main
            <% end %>
        </li>
        <% if current_user.profile %>
         <li><%= link_to profile_path(current_user.profile) do %>
                    <i class="fa fa-user"></i>Employee Profile<i class="fa fa-sort-desc"></i>
                <% end %>
            <% end %>
            <% else %>
            <li><%= link_to "New Profile", new_profile_path %></li>
                <ul>
                    <li><%= link_to "Tasks / Activities", tasks_path %></li>
                    <li><%= link_to "Vacations", vacations_path %></li>
                </ul>
         </li>
         <li><%= link_to projects_path do %>
                <i class="fa fa-building-o"></i>Projects<i class="fa fa-sort-desc"></i>
                <% end %>
            <ul>

然而,即使在创建新配置文件后,link "Create Profile" 仍然存在。我怎样才能解决这个问题?

你的错误在这里<% end %><% else %>。您在 else 之前关闭 if 测试。结果:一直显示<%= link_to "New Profile", new_profile_path %>

删除第 10 行,它将正常工作。

试试这个:

<% if !current_user.profile.blank? %>
  <%= link_to profile_path(current_user.profile) do %>
         <i class="fa fa-user"></i>Employee Profile<i class="fa fa-sort-desc"></i>
      <% end %>
<% else %>
  <%= link_to "New Profile", new_profile_path %>
<% end %>