Rails:如何在RESTful路由中使用RegExp而不是硬编码控制器名称?

时间:2013-04-10 00:18:36

标签: ruby-on-rails routing ruby-on-rails-3.2

默认情况下,Rails提供了两种设置RESTful路由的方法(让:id段是一个整数约束/[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

但这些网址看起来并不好看。我希望他们像这样:

site.com/bugsbunny123/homeinny

第一段和第二段是正则表达式,但仍然连接到UsersHomes控制器,并且是RESTful。我知道如何使用非资源路由来实现它。但是,使用:via => POST:via => PUT:except等将每个方法映射到控制器的RESTful方法是相当繁琐的。

我想要这样的事情:

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

或者像这样:

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

我们的想法是使用regexp用户名而不是默认RESTful路由器现在提供的硬编码/users/10

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

0 个答案:

没有答案