如何在Rails3中删除REST设计中的控制器名称?

时间:2011-01-27 07:12:12

标签: ruby-on-rails ruby-on-rails-3

鉴于用户资源,它就像这样

/用户/:短名称

但是如何删除控制器名称才能获得

/:短名称

如何在routes.rb中声明这一点,同时保持所有CRUD功能的即时性?

更新:阅读this之后,我将转向使用Rails的Sinatra来更好地处理这种类似API的设计。

2 个答案:

答案 0 :(得分:1)

在路线中,您应该可以执行类似

的操作
resource :users, :path => '/:shortname'

尝试一下并rake routes看看是否按预期出现。

答案 1 :(得分:1)

定义自定义匹配:

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

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

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