Я просматриваю учебник Майкла Hartl Ruby on Rails и получаю сообщение об ошибке в файле route.rb.

Это мой код в route.rb

  Rails.application.routes.draw do
  get 'users/new'
  match '/signup', :to => 'users#new'
  match '/contact', :to => 'pages#contact'
  match '/about', :to => 'pages#about'
  match '/help', :to => 'pages#help'
  root :to => 'pages#home'
end

И это ошибка, которую я получаю:

 You should not use the `match` method in your router without specifying an HTTP method. (ArgumentError)
If you want to expose your action to both GET and POST, add `via: [:get, :post]` option.
If you want to expose your action to GET, use `get` in the router:
  Instead of: match "controller#action"
  Do: get "controller#action"

Я сбит с толку. Должен ли я использовать get «controller#action» или match? И какой правильный код при использовании match?

1
VeronikaS 10 Апр 2020 в 11:16
1
Согласно сообщениям об ошибках и документам, вам потребуется еще один параметр для http глагол (ы).
 – 
Tpojka
10 Апр 2020 в 11:27

1 ответ

Да, вы должны использовать get или указать match '/signup', :to => 'users#new', via: :get. В основном это то, что говорит ошибка.

Вы можете проверить документы: Rails Routing from the Outside In

2
Yurii 10 Апр 2020 в 11:29
Спасибо, это сработало. Я использовал via: [:get], что также выдавало ошибку
 – 
VeronikaS
10 Апр 2020 в 13:21
Вы можете использовать варианты via: :get или via: [:get]
 – 
Yurii
11 Апр 2020 в 08:26