[英]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.