0

默认情况下,Rails 提供两种设置 RESTful 路由的方法(让:idsegment 是整数约束/[0-9]/+):

 1. site.com/users/10/homes/15
 2. site.com/user/homes/15

第一个变体:

您的控制器:UsersControllerHomesController

您的路线:

resources(:users) do  #=> plural, so the url path is /users/10, :id segment possible
    resources(:homes) #=> plural, so the url path is /homes/10, :id segment possible
end

第二种变体:

您的控制器:UsersControllerHomesController

您的路线:

resource(:user) do    #=> singular, so the url path is /user, no :id segment
    resources(:homes) #=> plural, so the url path is /homes/10, :id segment possible
end

但是这些 URL 看起来不太好。我希望他们像这样:

site.com/bugsbunny123/homeinny

第一个和第二个段是一个正则表达式,但仍然连接到控制器Users并且Homes是 RESTful。我知道如何使用 Non-Resourceful Routes 来实现它。但是,使用,:via => POST等将每个映射到控制器的 RESTful 方法是非常乏味的。:via => PUT:except

我想要这样的东西:

:users => /[A-Za-z0-9]+/
resource(:users) do ...

或像这样:

resource(/[A-Za-z0-9]+/ => :users) do ...

这个想法是使用正则表达式用户名,而不是/users/10默认 RESTful 路由器现在提供的硬编码。

是否有可能仍然使用它来实现它resource(:controller)?或者我必须使用非资源路由?

4

0 回答 0