2016-07-25 66 views
1

目前,我正在尝试使用引导模式使用AJAX来获取常规Devise sign_in表单。 sign_in部分在服务器端工作正常 - 用户登录,但问题是我无法获得前端请求处理,因为JS没有触发。Rails 5使用引导模式设计通过AJAX登录

sessions_controller.rb#创建

def create 
    resource = User.find_for_database_authentication(email: params[:user][:email]) 
    return invalid_login_attempt unless resource 

    if resource.valid_password?(params[:user][:password]) 
     sign_in :user, resource 
     return render :json => {:success => true} 
    end 

    invalid_login_attempt 
    end 

这部分工作正常 - 用户获取与请求200 “成功” 响应登录。

登录形式(默认一个色器件)

<%= form_for(resource, url: session_path(:user), remote: true) do |f| %> 
    <%= f.email_field :email, autofocus: true, placeholder: 'Email', class: "form-control center-block" %> 

    <%= f.password_field :password, placeholder: 'Password', autocomplete: "off", class: 'form-control center-block' %> 

    <%= f.submit 'log in', class: 'center-block btn btn-sp btn-lg'%> 
<% end %> 

形式是预渲染,采用隐藏式引导模式,这当然得到点击可见。

而且JS未烧制

$(document).on('ajax:success', '#new_user', function(){ 
    console.log("in"); 
}); 

我试过ajaxSuccess,老年.bind语法,把JS在应用层面和形式后立即呈现,但似乎无法得到那个JS要开火了,我的想法已经不多了,所以任何帮助都是值得赞赏的。运行于Rails 5,Ruby 2.3.1,jquery-rails 4.1.1。

+0

嗨,我有轨道5完全相同的问题和我的控制器是类似于你的。你管理了什么问题?大多数基于rails 4的ajax auth上的tutroials,我认为它不在rails 5中工作,例如失败状态:Processing by Users :: SessionsController#create as JS ---- Completed 401未授权8ms(Views:0.2ms | ActiveRecord: 1.0ms),但阿贾克斯并没有成功和失败 –

回答