默认情况下,Rails 提供两种设置 RESTful 路由的方法(让:id
segment 是整数约束/[0-9]/+
):
1. site.com/users/10/homes/15
2. site.com/user/homes/15
第一个变体:
您的控制器:UsersController
和HomesController
您的路线:
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
第二种变体:
您的控制器:UsersController
和HomesController
您的路线:
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)
?或者我必须使用非资源路由?