我遇到了一些问题,正在寻找帮助找到原始解决方案。
我的rails应用程序有一个登录表单,它位于模态窗口内。成功登录后,用户将重定向回request.referrer
。登录失败后,我希望他被重定向到同一个地方,但登录模式打开并显示闪存[:错误]。
我想过使用ajax进行登录,但是在成功登录后我确实需要刷新页面。
我的问题是:如何在登录模式窗口打开并显示错误的情况下呈现页面?
我很欣赏任何原创的想法!感谢
答案 0 :(得分:0)
您可以执行以下步骤 -
1)通过远程真实
提交您的登录表单 form_for @user, url: your_path remote: true, method: :post
2)在控制器中执行以下操作 -
##if successfully logged in than redirect to root or from where user came (request.referrer)
return render js: "window.location = '#{request.referrer.present? ? request.referrer : root_path}'"
##else render to same login page with errors // or put similar logic here
return render 'login_path' if @user.errors.present?
渲染页面时,它不会关闭模态窗口
答案 1 :(得分:0)
非常感谢所有的回复者。我尝试了两种不同的解决方案,灵感来自你的评论,最后选择了第二个。
如果登录成功,则调用ajax然后从呈现的js.erb模板重定向。灵感来自这个答案:https://stackoverflow.com/a/5454887/1936629
如果登录失败,请添加url参数,如果此参数存在,则打开模态窗口。
我选择第二个选项的原因是因为它在成功或失败的情况下刷新页面,因此允许我使用闪存哈希或活动记录错误消息等元素。
再次感谢