Ruby on rails 为可确认用户设计Ajax会话

Ruby on rails 为可确认用户设计Ajax会话,ruby-on-rails,ajax,devise,Ruby On Rails,Ajax,Devise,我有一个供用户注册的ajax表单。我在尝试登录未确认的用户时遇到问题。如果我输入了有效的用户名和密码,它就永远不会从会话控制器中到达用户的创建操作,如果我为用户输入了错误的密码,我将进入创建操作并从无效的\u登录\u尝试方法返回良好的响应 会话控制器: class SessionsController < Devise::SessionsController def create debugger resource = Bbp::User.find_for_datab

我有一个供用户注册的ajax表单。我在尝试登录未确认的用户时遇到问题。如果我输入了有效的用户名和密码,它就永远不会从会话控制器中到达用户的创建操作,如果我为用户输入了错误的密码,我将进入创建操作并从无效的\u登录\u尝试方法返回良好的响应

会话控制器:

class SessionsController < Devise::SessionsController

  def create
    debugger
    resource = Bbp::User.find_for_database_authentication(email: params[:user][:email])
    return invalid_login_attempt unless resource
    return invalid_login_attempt unless resource.valid_password?(params[:user][:password])
    return confirmation_needed if resource.confirmed_at.nil?
    if resource.valid_password?(params[:user][:password])
      sign_in :user, resource
      return render nothing: true
    end

    invalid_login_attempt
  end

   protected
    def invalid_login_attempt
      render json: "Wrong username or password", status: 401
    end

    def confirmation_needed
      render json: "You need to confirm your email before you can continue", status: 401
    end

end
class sessioncontroller
我的表格是:

<h2>Sign in</h2>
<div class="message-success-field user-sign-in-row"></div>
<%= form_for(resource, as: resource_name, url: '/admin.json',html: {id: 'new_user_session'}, remote: true ) do |f| %>
  <div class="form-group">
    <%= f.email_field :email, class: "form-control", placeholder: "Email", autofocus: true %>
  </div><!-- form-group -->
  <div class="form-group">
    <%= f.password_field :password, class: "form-control", placeholder: "Password #{'(' + @minimum_password_length.to_s + ' characters minimum)' if @minimum_password_length}", autocomplete: "off" %>
  </div><!-- form-group -->
  <% if devise_mapping.recoverable? %>
    <small><%= link_to "Forgot your password?", new_password_path(resource_name) %></small><br />
  <% end %>
  <% if devise_mapping.rememberable? %>
    <div class="field">
      <%= f.check_box :remember_me %>
      <%= f.label :remember_me %>
    </div>
  <% end %>
  <%= f.button "Sign in", class: "form-control btn btn-success" %>
  <p>Or connect via Facebook</p>
  <%= link_to "Sign in with facebook", "/auth/facebook", class: "form-control btn btn-primary" %>
<% end %>
<script>
  $(document).ready(function() {
    $('#new_user_session')
    .bind('ajax:success', function(response, evt, data, status, xhr) {
      $('div.user-sign-in-row').empty()
      $('div.user-sign-in-row').append("You are successfully logged in")
    })
    .bind("ajax:error", function(evt, xhr, status, error) {
      $('div.user-sign-in-row').empty()
      $('div.user-sign-in-row').append(xhr.responseText)
    });
  });
</script>
登录

或者通过Facebook连接

$(文档).ready(函数(){ $(“#新的_用户_会话”) .bind('ajax:success',函数(响应、evt、数据、状态、xhr){ $('div.user-sign-in-row').empty() $('div.user-sign-in-row').append(“您已成功登录”) }) .bind(“ajax:error”,函数(evt、xhr、status、error){ $('div.user-sign-in-row').empty() $('div.user-sign-in-row').append(xhr.responseText) }); });
我认为这是因为在创建之前的某个地方,设计检查用户是否可靠,但我找不到在哪里。我还设置会话控制器响应html和json

什么是问题