Ruby on rails 3 Rails 3如何使用Desive将尝试url更改为ajax请求的父url

Ruby on rails 3 Rails 3如何使用Desive将尝试url更改为ajax请求的父url,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,我正在使用rails(3.0.9)并在我的应用程序中设计1.4.8,其中包含超时功能。 在正常的Http请求中,一切都按预期工作。 如果用户在超时时单击ajax链接,则会通过下面的配置重定向到/users/sign_in.js 初始值设定人/designe.rb config.http_authenticatable_on_xhr = false config.navigational_formats = ["*/*", :html, :js] 在js文件中,我使用location.relo

我正在使用rails(3.0.9)并在我的应用程序中设计1.4.8,其中包含超时功能。 在正常的Http请求中,一切都按预期工作。 如果用户在超时时单击ajax链接,则会通过下面的配置重定向到/users/sign_in.js

初始值设定人/designe.rb

config.http_authenticatable_on_xhr = false
config.navigational_formats =  ["*/*", :html, :js]
在js文件中,我使用location.reload()重新加载了当前页面;这将按预期重定向到登录页面

用户/登录.js

location.reload()
问题:

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
登录后,designe重定向到上次请求的url(本例中为ajax url),但我应该重定向到ajax请求发送的html页面


请帮我解决这个问题。

我使用Desive::FailureApp解决了这个问题
我已设置了lib/custom\u故障。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
require'uri'
类CustomFailure
如果我没有错,您的问题是页面上的问题
/1
,出现超时,用户单击
/2
ajax请求,登录后您希望用户重定向到
/1
是我吗correct@Viren是的,您是对的。您可以使用sign.js.erb并设置
会话[:user\u return\u to]=location.reload()语句前面的referer path
。仅供参考,您需要设置js。erb@Viren谢谢你宝贵的回复。