仅针对特定操作的自定义路径路径

时间:2012-04-09 02:50:45

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

我已经有了这样的事情:

resources :users, :path => '', :path_names => { :edit => 'settings' } do
  resources :photos
end

这给了我很多我真正想要的路线。

/{user_id}/settings #does everything "edit" did
/{user_id}/photos #lists photos for certain user

但我在路由愿望清单上的最后一个条目是以资源丰富且RESTful的方式将“用户”作为我的索引路径。因为现在,索引将丢失到优先使用的根URl。基本上,我希望:path => ''不适用于索引操作。我尝试添加:except => [:index],但ActiveRecord仍尝试将/users/与“用户”的ID匹配。 (这是字母数字,所以约束在这里没有帮助。)

接下来我应该尝试什么?或者我应该扣下并撰写单独的“匹配”声明?我觉得应该有办法从资源中建立这个......

1 个答案:

答案 0 :(得分:4)

我最终做的只是编写第二个路由规则(我正在过度思考)。由于我在路由中定义了root,因此已经为index,new和create覆盖了'/'。

因此,只需在单独的行上重写规则,实际上就很容易了。

resources :users, :path => '/users', :only => [:index, :new, :create]
resources :users, :path => '', :path_names => { :edit => 'settings' } do
    resources :photos
end