根据用户是否创建了配置文件来更改导航栏链接(RoR)

时间:2015-06-02 11:07:51

标签: ruby-on-rails ruby if-statement model devise

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

当新用户第一次登录时,我想要一个"创建个人资料"链接使用new_profile_path在导航栏中显示,但是一旦该特定用户创建了他/她的个人资料,我希望"创建个人资料"改为"查看个人资料"永久保持这种方式,应该重定向到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>

然而,即使在创建新的个人资料后,链接也会创建个人资料&#34;仍然存在。我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

试试这个:

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