有什么方法可以让 url_for 在动作调度路由期间根据 request.host 返回 url?
mount Collaborate::Engine => '/apps/collaborate', :constraints => {:host => 'example.com' }
mount Collaborate::Engine => '/apps/worktogether'
例子:
当用户在 example.com 主机上时
协作路径 => /apps/collaborate
当用户在任何其他主机上时
协作路径 => /apps/worktogether
经过大量研究,我意识到 RouteSet 类具有 named_routes ,它不考虑返回 url 的约束。
我已经尝试在 action_dispatch/routing/route_set.rb 中覆盖 @set 以从 rails 应用程序拾取,但 dint 按预期工作
@search_set = Rails.application.routes.set.routes.select{|x| x.defaults[:host] == options[:host] }[0]
@set = @search_set unless @search_set.blank?