我正在尝试基于某些条件执行路由重定向
当前路线:192.120.56.45/fetch/foo_id
我有一个接受foo_id并告诉我们是新foo_id还是旧foo_id的方法,如果是新的,则返回new_foo_id并希望将其重定向到其他域192.108.26.85/new/get/new_foo_id
如果是旧foo_id,则不进行重定向,即192.120.56.45/fetch/foo_id
routes.rb中的当前代码:get '/fetch/:_id' => redirect { |path_params| "#{fooDetector.detectfoo(path_params[:_id])}" }
方法中的当前代码:
def detectfoo(request_id)
new_id = get_new_request_id(request_id)
if new_id.present?
return "192.108.26.85/new/get/#{new_id}"
else
return "192.120.56.45/fetch/#{request_id}"
end
end
以上代码以太多重定向结尾,以防其旧foo_id进入无限循环。
1条答案
按热度按时间bqf10yzr1#
你的代码不工作(“太多重定向”),因为一个“旧的”foo在循环中一遍又一遍地重定向回它自己。你想说的是“只重定向新的foo”。
为了在路由器中执行此条件路由/重定向,您需要使用一个约束。
另一种选择是将此重定向放在
OldFooController#index
操作的顶部(可能作为before_action
)。