设计-使用Ajax登录

这里有没有可能为ajax通信修改designesessioncontroller

编辑

我找到了解决方案,并将其发布到答案中,谢谢

一,。生成设计控制器,以便我们可以修改它

rails g装置:控制器

现在我们在app/controllers/[model]目录中有了所有控制器

二,。编辑routes.rb

让我们设置Desive以使用修改后的SessionController

首先将此代码(当然change:users添加到您的设计模型中)添加到config/routes.rb

为用户、控制器设计:{
会话:“用户/会话”
}

三,。修改会话\u controller.rb

找到create方法并将其更改为

def创建
resource=User.find用于数据库身份验证(email:params[:User][:email])
返回无效的\u登录\u尝试,除非资源
如果资源是有效的密码?(参数[:用户][:密码])
登录:用户、资源
返回render nothing:true
终止
无效的\u登录\u尝试
终止

在受保护后创建新方法

def登录尝试无效
设置闪烁消息(:警报,:无效)
呈现json:flash[:alert],状态:401
终止

四,。设计

将其插入到config/initializers/designe.rb中

config.http\u authenticable\u on\u xhr=false
config.navigational_formats=[“*/*”,:html,:json]

五,。无效的电子邮件或密码消息

会话下的config/locales/designe.en.yml中插入新消息

无效:“无效的电子邮件或密码。”

六,。看法

=form_表示资源,url:session_路径(:user),remote:true do|f|
=f.文本\字段:电子邮件
=f.密码\字段:密码
记住我要做的事
记得我吗
复选框:记住我
=f.提交值:“登录”
:javascript
$(文档).ready(函数(){
//表格id
$(“#新用户”)
.bind('ajax:success',函数(evt、数据、状态、xhr){
//状态为200时调用的函数(例如)
console.log('success');
})
.bind(“ajax:error”,函数(evt、xhr、status、error){
//状态为401或500时调用的函数(例如)
console.log(xhr.responseText);
});
});

重要事项远程:正确

与{status:’true’}不同,我使用状态200或401的原因是数据量更小,因此速度更快、更干净

解释

登录时,您将在参数中获取这些数据

操作:“创建”
提交:“登录”
控制器:“用户/会话”
用户:{
电子邮件:“[email protected]"
密码:“123”
记住我:“0”
}
utf8:“✓"

在签名之前,您需要授权用户

resource=User.find\u用于数据库身份验证(电子邮件:params[:User][:email])

User.find\u用于数据库\u身份验证

若找到用户,则资源将填充以下内容

创建于:“2015-05-29T12:48:04.000Z”
电子邮件:“[email protected]
身份证号码:1
更新地址:“2015-06-13T19:56:54.000Z”

否则将是

null

如果用户经过身份验证,我们将验证他的密码

如果资源是有效的密码?(参数[:用户][:密码])

最后登录

登录:用户、资源

来源

会话控制器

帮助我
安德烈亚斯·林斯塔德

发表评论