Различные действия контроллера для запросов POST и GET на одном и том же маршруте в Rails - PullRequest
5 голосов
/ 10 мая 2011

Я хочу направить один и тот же адрес, например 'http://server/path', на разные действия контроллера в зависимости от типа запроса, будь то запрос GET или POST.

Как это сделать в Rails?

Спасибо!

Ответы [ 3 ]

17 голосов
/ 10 мая 2011
get "/path" => "controller#get_action"
post "/path" => "controller#post_action"
6 голосов
/ 10 мая 2011

Я думаю, вы могли бы сделать это:

match '/path' => 'controller#action', :via => :get
match '/path' => 'controller#another_action', :via => :post
0 голосов
/ 10 мая 2011

Создайте ресурс, используя скаффолд Rails, и вы увидите, как это должно быть сделано:

./script/generate scaffold Person name:string

EDIT

Понизили голосование, поэтому, возможно, мне стоит расширить свой ответ. Эшафот демонстрирует, как создать ресурс RESTful. По соглашению, POST будет сопоставляться с методом create в контроллере, GET будет сопоставляться с методом index (или методом show, если присутствует идентификатор) и т. Д. Все, что вам нужно добавить в ваш route.rb:

resources :people
...