假设我有以下受限于特定子域的路由:
App::Application.routes.draw do
constraints :subdomain => "admin" do
scope :module => "backend", :as => "backend" do
resources :signups
root :to => "signups#index"
end
end
constraints :subdomain => "www" do
resources :main
root :to => "main#landing"
end
end
我的问题是,root_url
两者backend_root_url
都返回当前子域的 url:“http:// current-subdomain .lvh.me/”,而不是资源特定的子域。我想root_url
返回“http://www.lvh.me/ ”并返回“ http://admin.lvh.me/ ”(子域下所有资源的行为应该相同)。backend_root_url
我试图在rails 3.2中通过在不同的地方设置url选项来实现这一点,其中一个是应用程序控制器中的url_options:
class ApplicationController < ActionController::Base
def url_options
{host: "lvh.me", only_path: false}.merge(super)
end
end
也许我需要手动覆盖 url 助手?我将如何处理(访问路线等)?
编辑:我可以使用 root_url(:subdomain => "admin") 得到正确的结果,它返回 "http:// admin .lvh.me/" 而不管当前的子域。但是,我宁愿不必在整个代码中指定这一点。