Ruby on rails Rails设计:用户登录?不起作用

Ruby on rails Rails设计:用户登录?不起作用,ruby-on-rails,ruby,ruby-on-rails-3,devise,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 %> 但当您以用户身份登录时: 我

我认为:

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



为什么助手不工作

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

也许试试这个,如果不起作用,我会看看实际登录有什么问题

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

签到
未登录

您是否在控制器中使用Desive

before_action :authenticate_user!

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

请确保使用的是正确的模型。例如,如果您的模型是会员,那么您应该在中使用
member\u sign\u,而不是在
中使用
user\u sign\u
$bundle exec rails g再次设计用户
。我的问题是
design\u for users
在路由文件中不知何故丢失了

可能是一个可能的解释


您可能有一个预先存在的
current\u user
方法,用于停止在
user\u signed\u in?
中调用designe的
current\u user
以返回预期值。

这应该进入哪个控制器?我使用了Deviate,我有“controllers/users/omniauth\u callbacks\u controller.rb”,还有
application\u controller.rb
它应该放在您试图操纵的视图的控制器中,您可以处理问题中的if循环。Deviate\u for丢失,因此在应用程序视图中无法识别助手等。