繁体   English   中英

在RAILS上使用Devise身份验证时遇到IF user_signed问题

[英]Having trouble with IF user_signed in using Devise authentication on RAILS

我正在我的Rails网站上实施devise用户身份验证。 一切正常。 我的视图,模型,URL等均已设置。 用户可以注册,登录和注销。

我遇到的问题是这段代码:即使我登录后,它仍然在标题和“注册”上显示“登录”作为选项。 当用户通过身份验证后,我可以使用什么语法或代码使这两个特殊项消失。 下面的代码在我的_header.html.erb中

<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav navbar-right">
  <li><%= link_to "Home", root_path %></li>
  <li><%= link_to "About", about_path %></li>
  <li><%= link_to "Login", new_user_session_path %></li> 
  <li><%= link_to "Signup", new_user_registration_path %></li>
  <% if user_signed_in? %>
    <li><%= link_to "Log out", destroy_user_session_path, method: :delete %></li>
    <% else %>
</ul>
<% end %>

您可以执行以下操作:

<% if user_signed_in? %>
<li><%= link_to "Log out", destroy_user_session_path, method: :delete %></li>
<% else %>
<li><%= link_to "Login", new_user_session_path %></li> 
<li><%= link_to "Signup", new_user_registration_path %></li>
<% end %>

您只需要在else部分中编写"Login""Signup"

一切都很好,只是您需要在else块中包含登录/注册,以便用户登录后不会呈现。

  <% if user_signed_in? %>
    <li><%= link_to "Log out", destroy_user_session_path, method: :delete %></li>
  <% else %>
    <li><%= link_to "Login", new_user_session_path %></li> 
    <li><%= link_to "Signup", new_user_registration_path %></li>
  <% end %>

这是我们使用的确切代码:

<% if user_signed_in? %>
    <%= link_to " ", destroy_user_session_path, class: "ion-close", id: "logout", title: "Log Out", data: { placement: "bottom", confirm: "Really Logout?" }, method: :delete %>
<% else %>
    <%= link_to "", new_user_session_path, class: "ion-locked login", title: "Login / Register", data: { placement: "bottom" }, rel: "modal" %>
<% end %>

不幸的是,它不是复制/粘贴(我们还有其他使用的东西),但是应该向您展示它应该如何工作。


对于您的错误,我建议您进行以下操作:

1.输出

只是输出<%= user_signed_in? %> <%= user_signed_in? %>在您看来。

这将向您显示它是true false -使您能够确定为什么条件逻辑可能不起作用。

我个人认为您的会议尚未开始; 这将显示出来。

--

2.重新启动

第二件事是重新启动服务器。

您可能会遇到一些会话冲突,或者遇到另一组问题,导致该应用无法保存您的身份验证状态。

--

3.会议

最后,您的会话可能存在问题。

我不知道具体细节,但是有user_signed_in? 与您从登录等中看到的内容不同,表明您设置了多个会话,或者根本没有设置。

无论哪种方式,您都可能希望删除所有浏览器缓存数据(如果需要,我可以提供有关如何执行此操作的说明进行更新)以根据需要重置会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM