这里有没有可能为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
如果用户经过身份验证,我们将验证他的密码
如果资源是有效的密码?(参数[:用户][:密码])
最后登录
登录:用户、资源
来源
会话控制器
帮助我
安德烈亚斯·林斯塔德