Rails中嵌套资源的子域

时间:2012-07-16 00:11:49

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 routes subdomain

我的rails应用程序设置为使用此RailsCast中描述的子域:

http://railscasts.com/episodes/221-subdomains-in-rails-3

但是,现在,路径渲染如下:

http://organization.domain.com/organizations/1/edit

我已经设置了控制器来选择基于子域的组织,所以我想知道是否有办法去掉路径的/ organizations /:id部分,这样:

link_to edit_organization(@organization)

转到http://organization.domain/edit,而不是http://organization.domain/organizations/:id/edit

由于组织内部会有许多嵌套资源(人员,捐赠等),因此URL的结束时间非常长,并且路径生成方法仍然非常简单。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下路线:

resource :organization, :path => ""

会将你的网址缩减为'http://organization.domain/:id / edit`。

摆脱:id是棘手的,我不认为它可以直接完成。我会做的是:

resource :organization, :path => "", :only => [] do
    match "index", :via => :get
    match "new", :via => :get
    match "show", :via => :get, :constraints => {:subdomain => /[a-zA-Z]+/}
    match "edit", :via => :get, :constraints => {:subdomain => /[a-zA-Z]+/}
    match "update", :via => :put, :constraints => {:subdomain => /[a-zA-Z]+/}
    match "create", :via => :post
end

不是很干,但我认为它应该有用。