Rails设计:user_signed_in?不工作

时间:2011-05-14 18:15:24

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我认为这是:

<% if user_signed_in? %>
<%= current_user.email %>
<% else %>
<%= link_to "Sign in", new_user_session_path %><br />
<%= link_to "Opret", new_user_session_path %><br />
<% end %>

但是当以用户身份登录时: 我仍然可以看到链接:

<%= link_to "Sign in", new_user_session_path %><br />
<%= link_to "Opret", new_user_session_path %><br />

为什么助手不能正常工作?

6 个答案:

答案 0 :(得分:22)

您是否在控制器中使用了过滤器前的设计?

before_filter :authenticate_user!

答案 1 :(得分:8)

不确定user_signed_in背后是什么?方法,您的登录无法正常工作或方法已损坏。

也许尝试一下,如果这不起作用,我会看看实际登录出了什么问题。

<%unless current_user.blank? -%>
signed in
<%else -%>
not signed in
<%end-%>

答案 2 :(得分:4)

确保使用的是正确的型号。例如,如果您的模型是成员,那么您应该使用member_sign_in而不是user_sign_in

答案 3 :(得分:1)

如果登录工作正常,可能是因为正在进行某种缓存?

答案 4 :(得分:1)

This可能是一种可能的解释。

您可能有一个预先存在的current_user方法,可以阻止在current_user内调用的设计user_signed_in?返回预期值。

答案 5 :(得分:0)

我遇到了完全相同的问题,并通过这样做解决了这个问题     再次devise_for users。我的问题是JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 在路由文件中以某种方式丢失了。