是否可以将子域映射到资源?我有一个公司模型。目前,使用 subdomain_fu,我的路由文件包含:
map.company_root '', :controller => 'companies', :action => 'show',
:conditions => { :subdomain => /.+/ }
我的公司模型包含一个“子域”列。
虽然这按预期工作,但它是一条命名路线并且并不安静。本质上,我需要将“name.domain.com”映射到公司控制器的显示操作。命名路由是可行的方法,还是可以使用资源路由?
人们可以将条件传递给资源路由以及命名路由。在一个应用程序中,我涉及的所有内容都仅限于一个帐户。 A :before_filter 使用子域加载帐户。因此,对于范围为帐户的资源,我们希望将路由范围限制为具有子域的 url。执行此操作的 DRY 方法是使用带有选项的映射:
map.with_options :conditions => {:subdomain => /.+/} do |site|
site.resources :user_sessions, :only => [:new, :create, :destroy]
site.resources :users
site.login 'login', :controller => "user_sessions", :action => "new"
site.logout 'logout', :controller => "user_sessions", :action => "destroy"
…
end
map.connect 'accounts/new/:plan', :controller => "accounts", :action => "new"
map.resources :accounts, :only => [:new, :create]
正如您所看到的,命名路由也将接受带有子域的条件哈希。您还可以采用上面介绍的 Ryan 方法,或者您可以根据每个资源指定条件:
map.resources :users, :conditions => {:subdomain => /.+/}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)