2012-08-14 67 views
0

在Ruby on Rails中,是否有方法將另一個RESTful操作添加到複數資源的基本URL?我在尋找這樣的事情:向多個資源的基本URL添加路由

resources :groups do 
    resources :users do 
    put on: :base, to: 'users#update_all' 
    end 
end 

這樣會生成路線:[PUT] groups/:group_id/users => users#update_all

我已經試着這樣做:

resources :groups do 
    resources :users 
    put 'users', on: :member, to: 'users#update_all' 
end 

但是,這並不保值,控制器中的params[:group_id]

+0

僅供參考,這是一個人爲的例子。我的實際設置稍微複雜一些。 – Ajedi32 2012-08-14 18:35:21

回答

1
resources :users do 
    collection do 
    put '' => 'users#update_all' ## PUT /users 
    end 
end 

UPDATE

這將建議這樣做雖然:

resources :users do 
    collection do 
    put 'update_all' ## PUT /users/update_all 
    end 
end 

給用戶控制器的update_all操作兩個途徑。

資源

+0

謝謝。我希望路由適用於'/ groups /:group_id/users'的原因是我希望它與Rails資源的默認路由保持一致。在Rails中,'[PUT]/groups /:group_id/users /:id'指向'users#update'動作,那麼爲什麼'[PUT]/groups /:group_id/users'指向'users #update_all'行動? – Ajedi32 2012-08-14 18:37:16

+0

我想這很有道理:) – nickaknudson 2012-08-14 18:40:02