新手问题 关于 before_filter

hicupp · 2013年08月04日 · 最后由 hicupp 回复于 2013年08月04日 · 5937 次阅读

各位大大们: 发送一个 remote 为 true 的 post 请求给某个 controller,这个 controller 先用 before_filter 对请求进行验证,在 before_filter 里我这么写:

before_filter :check
protected
def check
  if request.xhr?
    dosomething
    #如果不满足条件
    redirect_to root_url
  end
end

发现请求设置了 remote 为 true,这儿就跳转不了,一旦去掉 remote 为 true 就能正常跳转。怎么才能使 remote 为 true 的请求在进行 before_filter 时可以顺利的redirect_to root_url

好奇怪啊,既然是 ajax 请求,为什么还要跳转呢

是这样。。我想 check 一下时间,如果时间过了某个时间段就没有权限访问相应的 action,而这个 action 是用 ajax 处理

remote 不能处理 302 重定向,只能返回一段 js 在客户端控制重定向。

#3 楼 @Rei 有什么好的解决方案么?

你可以给个浏览器端能判断的结果,然后在浏览器端 window.location =

#4 楼 @hicupp 就是返回一段 js 啊

def check
  if check_something
    respond_to do |format|
      format.js {
        render :check_redirect
      }
    end
end

check_redirect.js.erb

window.location.href = '<%= j root_url %>';

@Rei @luikore 解决了,一个人搞开发好费劲啊。多谢哈!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号