Хорошо, прежде всего, если вы прочитаете это , вы знаете, что resources :products
добавляет следующий маршрут
Verb Path action used for
POST /products create create a new product
также маршруты сопоставляются сверху, так как у вас есть
resources :products # matches '/products' via POST
match '/products' => 'products#index', :via => :post
каждый раз, когда у вас есть POST-запрос к '/products'
первому маршруту, определенному с resources :products
, совпадает
show
действие работает, потому что оно также определено с помощью resources :products
, но только для метода GET
теперь обходные пути
изменить порядок на
match '/products' => 'products#index', :via => :post
resources :products # never matched '/products' via POST
или используйте :except
resources :products, :except => :create # does not match '/products' via POST
match '/products' => 'products#index', :via => :post
в обоих случаях ваше create
действие будет более новым