我有一个sessions_helper文件,用于查找用户以及是否找到用户登录到应用程序。但是,如果找不到用户,则应该给出错误。
module SessionsHelper
# Log a user in after authenticating, store in session
def log_in(user)
if user.id.nil?
format.html { redirect_to signin_path, notice: 'Invalid Email or password' }
format.json { head :no_content }
else
session[:user_id] = user.id
end
end
end
我有会话/未经审查的观点。
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">Log In!</div>
<div class="panel-body">
<%= form_for(:credentials, url: signin_path) do |f| %>
<div class="form-group">
<%= f.label :email%>
<%= f.email_field :email, class: 'form-control'%>
</div>
<div class="form-group">
<%= f.label :password%>
<%= f.password_field :password, class: 'form-control'%>
</div>
<%= submit_tag %>
<% end %>
</div>
</div>
</div>
此代码允许用户成功登录应用程序,但如果未找到用户,则不会在应用程序上显示错误。
答案 0 :(得分:1)
您需要将此信息包含在您的视图中
<% if flash[:notice] %>
<div class="notice"><%= flash[:notice] %></div>
<% end %>
此代码将显示您的错误消息。
阅读here
答案 1 :(得分:1)
您尚未在view
中发布flash
message。
-
<强>闪存强>
Rails Flash是一种会话变量,用于存储动作中生成的数据。这意味着您可以在视图或布局中调用警报/通知。
有3种类型的闪光灯,虽然我认为你可以使用任意数量的闪光灯:
notice
alert
error
当您致电... notice: 'Invalid Email or password' }
时,您告诉我们填充flash[:notice]
对象。
如果要在视图中显示此内容,则需要调用它,如下所示:
<div class="col-md-4">
<div class="panel panel-default">
<!-- Error -->
<%= flash[:notice] if flash[:notice] %>
<!-- Login -->
<div class="panel-heading">Log In!</div>
<div class="panel-body">
<%= form_for(:credentials, url: signin_path) do |f| %>
<div class="form-group">
<%= f.label :email%>
<%= f.email_field :email, class: 'form-control'%>
</div>
<div class="form-group">
<%= f.label :password%>
<%= f.password_field :password, class: 'form-control'%>
</div>
<%= submit_tag %>
<% end %>
</div>
</div>
</div>