【问题标题】:Rails 3 how to change the attempt url as parent url for ajax request using deviseRails 3 如何使用 devise 将尝试 url 更改为 ajax 请求的父 url
【发布时间】:2013-12-08 12:08:36
【问题描述】:

我正在使用 rails(3.0.9) 并在我的应用程序中设计了具有超时功能的 1.4.8。 在正常的 Http 请求中,每件事都按预期工作。 如果用户在超时时点击 ajax 链接,他们会通过以下配置重定向到 /users/sign_in.js

initializers/devise.rb

config.http_authenticatable_on_xhr = false
config.navigational_formats =  ["*/*", :html, :js]

在 js 文件中,我使用 location.reload(); 重新加载了当前页面;这将按预期重定向到登录页面

users/sign_in.js

location.reload()

问题:

登录后,设计重定向到最后请求的 url 在这种情况下是 ajax url 但我应该重定向到发送 ajax 请求的 html 页面。

请帮我解决这个问题。

【问题讨论】:

  • 如果我是正确的,你的问题是你的页面 /1 并且发生超时并且用户点击 /2 ajax 请求,登录后你希望用户重定向到 /1 我是否正确
  • @Viren 是的,你是对的。
  • 你可以使用 sign.js.erb 并且可以在 location.reload() 语句之前设置session[:user_return_to]= referrer path。仅供参考,您需要设置 js.erb
  • @Viren 感谢您的宝贵回复。

标签: ruby-on-rails-3 devise


【解决方案1】:

我使用 Devise::FailureApp 解决了
我已在 lib/custom_failure.rb:

中设置
require 'uri'
class CustomFailure < Devise::FailureApp

  def redirect_url
    request.env['rack.session']["#{warden_options[:scope]}_return_to"] = URI(request.env['HTTP_REFERER']).path if request.xhr?
    super
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2015-10-10
    • 2023-03-25
    相关资源
    最近更新 更多