Добавление маршрутов сбора GET и POST к маршруту ресурса - PullRequest
2 голосов
/ 07 сентября 2011

Ситуация

У меня есть ресурс FootballPlayer, который доступен по адресу:

GET /clubs/id/football_players

Однако я хочу получить доступ только к выбранным футболистам, например:

GET /clubs/id/football_players/selected

Я получил это, работая со следующим кодом в rout.rb:

resources :clubs do
  resources :football_players do
    collection do
      get 'selected'
    end
  end
end

Когда я получаю доступ к URL, запускается действие selected FootballPlayers.

Проблема

Я также хочу иметь возможность заменить выбор с набором других футболистов. Логический запрос для этого будет:

POST /clubs/id/football_players/selected

Однако, если я добавлю post 'selected' к rout.rb, он перенаправит запрос на то же действие selected.

Вопрос

Как сделать так, чтобы два маршрута перенаправлялись на два разных действия? Или это невозможно, и мне нужно различать GET и POST в действии самостоятельно? Если да, то как мне это сделать?

Ответы [ 2 ]

9 голосов
/ 07 сентября 2011

Явно укажите действия для обоих методов:

resources :clubs do
  resources :football_players do
    collection do
      get  'selected', :action => 'list_selected'
      post 'selected', :action => 'change_selected'
    end
  end
end
0 голосов
/ 16 декабря 2016

[РЕДАКТИРОВАТЬ]

Не пробовал ответ выше, но я думаю, что разница будет сгенерированный маршрут*.С другой стороны, оба пути 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...