То же Rails 4 маршрута для запросов GET и POST
В Rails 3 Match используется для указания на действие как для "GET" , так и "POST" и других типов запросов.
match "user/account" => user#account
Теперь это укажет на действие учетной записи пользовательского контроллера для запросов GET и POST.
Как и в Rails 4 "совпадение" устарело, можем ли мы создать тот же маршрут для GET и POST в Rails 4?
Ответы
Ответ 1
Вы можете использовать совпадение, если у вас есть via
:
match "user/account" => "user#account", as: :user_account, via: [:get, :post]
Изменить: добавлен параметр as:
, чтобы он был доступен через помощник URL. user_account_path
или user_account_url
в этом случае.
Ответ 2
В маршрутах метод сопоставления больше не будет действовать как опция catch-all. Теперь вы должны указать, какой HTTP-глагол отвечать с помощью опции: через
Rails 3.2
match "/users/:id" => "users#show"
Rails 4.0
match "/users/:id" => "users#show", via: :get
или указать несколько глаголов
match "/users" => "users#index", via: [:get, :post]
Другим вариантом лучшей совместимости Rails 3.2 является просто указать ваши действия с явным get, post или любым другим HTTP-глаголом. С помощью этой опции вы по-прежнему получаете свой код, работающий сегодня, и в будущем подтвердите его для обновления.
Совместимость с Rails 3.2 и 4.0
get "/users/:id" => "users#show"
несколько глаголов
get "/users" => "users#index"
post "/users" => "users#index"