我们拥有功能齐全的网站,但后端正在维护,因此我们希望将所有客户重定向到www.example.com/unavailable。除了1页www.example.com/admin,因为这是我们将不可用页面打开和关闭的管理页面。
所以我的问题: 是否可以像这样打开和关闭路线:
routes.rb的示例代码:
if Settings.unavailable
get "*", to: "/unavailable", except: "/admin"
end
答案 0 :(得分:0)
您可以在routes.rb中添加条件,但是您将无法检测当前网址是什么。您应该将此逻辑放在ApplicationController(或其他顶级控制器)中的before_filter中:
class ApplicationController < ActionController::Base
before_filter :check_maintenance
def check_maintenance
if Settings.unavailable && action_name != 'unavailable' # or other conditions
redirect_to '/unavailable'
end
end
end
答案 1 :(得分:0)
在Michal的帖子的帮助下,我调整了他的答案:
class ApplicationController < ActionController::Base
before_filter :check_maintenance
def check_maintenance
if Settings.first.maintenance && request.fullpath.split("?")[0].gsub("/","") != 'unavailable' && (request.fullpath.split("?")[0].exclude? "admin") # or other conditions
redirect_to '/unavailable'
end
end
end