Ruby-on-Rails:如何摆脱“你被重定向”的页面

前端之家收集整理的这篇文章主要介绍了Ruby-on-Rails:如何摆脱“你被重定向”的页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我覆盖了Devise的失败响应,以便我可以设置401状态代码.但是,当用户登录失败时,将被重定向到具有“您被重定向链接页面.如果我删除:status => 401从重定向它工作正常.
  1. class CustomFailure < Devise::FailureApp
  2. def redirect_url
  3. new_user_session_url(:subdomain => 'secure')
  4. end
  5.  
  6. def respond
  7. if http_auth?
  8. http_auth
  9. else
  10. store_location!
  11. flash[:alert] = i18n_message unless flash[:notice]
  12. redirect_to redirect_url,:status => 401
  13. end
  14. end
  15. end

编辑

或者,我想显示Flash消息并保留在同一页面上,但添加以下代码行:

  1. render :text => "unauthorized",:status => 401

造成红宝石抱怨:

  1. undefined method `render' for #<CustomFailure:0x00000103367f28>

这里发生了什么

解决方法

重定向的适当HTTP状态为30x格式(301和302是最常用的).默认情况下,redirect_to帮助器在HTTP响应中设置302状态标题.如果您重写并将其设置为401,则Web浏览器将假定响应是常规网页,并将渲染响应正文 – 重定向是“您正被重定向”的样板文本.

猜你在找的Ruby相关文章