我在表单中将Ajax添加到我的签名中,当我输入真正的信息时,它会很好地工作,但是当我输入错误信息时,我无法处理错误消息。
sessions_controller.rb
class SessionsController < Devise::SessionsController
skip_before_filter :verify_authenticity_token, :only => [:destroy, :create]
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_flashing_format?
sign_in(resource_name, resource)
yield resource if block_given?
respond_to do |format|
format.html { redirect_to root_path }
format.js
end
end
end形式上的签名
<div class="sign_in_modal">
<div class="modal fade" id="sign_in" tabindex="-1" role="dialog" aria-labelledby="sign_in">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Login</h4>
</div>
<div class="modal-body">
<%= form_for(resource, as: resource_name, url: user_session_path, remote: true) do |f| %>
<div class="form-group">
<%= f.label :username, 'Username' %>
<%= f.text_field :username, autofocus: true, class: 'form-control txt-main', id: 'sign_in_auto_focus' %>
</div>
<div class="form-group">
<%= f.label :password, 'Password' %>
<%= f.password_field :password, autocomplete: "off", class: 'form-control txt-main' %>
</div>
<% if devise_mapping.rememberable? -%>
<%= f.check_box :remember_me %>
<%= f.label :remember_me, 'Save your login?' %>
<% end -%>
</div>
<div class="modal-footer">
<%= f.submit "Login", class: 'btn btn-main btn-md' %>
<% end %>
</div>
</div>
</div>
</div>
</div>create.js.erb
$('.sign_in_modal .modal').modal('hide');
$('.header h1').after('<p class="username"><%= current_user.username.capitalize %></p>');
$('.sign_up_and_in').remove();
$('.navbar-nav').append('<li><a tabindex="-1" title="Edit Account Setting" href="/users/edit"><i class="fa fa-cog fa-lg"></i><span style="display: none;" class="cog-text">Edit Account Setting</span></a></li>');
$('.navbar-nav').append('<li><%= link_to sanitize('<i class="fa fa-sign-out fa-lg"></i><span style="display: none;" class="sign-out-text">LogOut</span>'), destroy_user_session_path, :method => :delete, :tabindex => -1, title: "LogOut" %></li>');在这种情况下,我如何处理错误消息?
发布于 2015-12-21 22:14:06
我通过覆盖会话控制器的新操作来解决这个问题,如下所示:
def new
respond_to do |format|
format.js
end
end如果用户输入真实用户名和密码将登录,如果输入错误的用户名或密码,则new.js.erb文件将运行并显示错误的数据消息。
https://stackoverflow.com/questions/34387798
复制相似问题