情况
我有一个可以访问的资源FootballPlayer:
GET /clubs/id/football_players
但是,我想要一种方法只能访问所选的足球运动员,如下所示:
GET /clubs/id/football_players/selected
我在routes.rb中使用了以下代码:
resources :clubs do
resources :football_players do
collection do
get 'selected'
end
end
end
当我访问该网址时,会触发selected
的{{1}}操作。
问题
我还希望能够用一组其他足球运动员替换选择。这样做的逻辑请求是:
FootballPlayers
但是,如果我将POST /clubs/id/football_players/selected
添加到routes.rb,它会将请求重定向到相同的post 'selected'
操作。
问题
如何让两条路线重定向到两个不同的动作?或者这不可能,我是否需要在动作中区分GET和POST?如果是这样,我该怎么做?
答案 0 :(得分:9)
明确指定两种方法的操作:
resources :clubs do
resources :football_players do
collection do
get 'selected', :action => 'list_selected'
post 'selected', :action => 'change_selected'
end
end
end
答案 1 :(得分:0)
<强> [编辑] 强>
没有尝试过上面的答案,但我认为区别在于生成的路线。对于这种情况,它将是clubs_football_players_selected_path
和clubs_football_players_change_selected_path
。另一方面,两条路径都是clubs_football_players_selected_path
(我只是猜测)。
resources :clubs do
resources :football_players do
collection do
get :selected # or... get :list_selected, path: 'selected'
post :change_selected, path: 'selected'
end
end
end