2011-01-27 49 views
1

给定用户的资源,它是这样的如何在Rails3中的REST设计中删除控制器名称?

/用户/:短名称

但是,如何才能控制器名称中移除得到公正

/:短名称

我怎样才能申报这在routes.rb中同时保持所有CRUD功能的即时?

更新:阅读this我正在转向Sinatra over Rails以更好地处理这种API类设计。

+0

不确定你的意思,这里。你的意思是`/ users /:shortname`吗? – 2011-01-27 07:26:11

+0

对,更新。 – Martin 2011-01-27 07:39:11

+0

我确定这个问题已被询问至少3次,我已经回答了其中一个,但我找不到它... – 2011-01-27 08:19:00

回答

1

定义一个定制的匹配:

match ':shortname' => 'users#action' 

用户#行动与应该接收请求的动作名称替换行动。只要记住在您的路线文件中以适当的顺序放置它。 Rails从顶部开始查看路由文件的每一行,并选择第一个匹配的路由。 ':shortname'将匹配任何第一级路径,包括/ users!因此,使用第一级路径将其放在任何路线下面,这将包括您的所有资源路线。这里有一个例子:

resources :users 
resources :posts 
match '/blog' => 'posts#index' 
match ':shortname' => 'users#action' 
1

在路线,你应该能够做到像

resource :users, :path => '/:shortname' 

尝试了这一点,并rake routes,看看是否能出来的预期。

相关问题