1

我的 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 最终不要太长并且路径生成方法保持非常简单很重要。

有没有办法做到这一点?

4

1 回答 1

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

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

于 2012-07-16T14:46:38.063 回答