7
respostas

Erro ao recarregar pagina

Todas as vezes em que tento recarregar o form de cadastro de produto, esta dando erro:

Routing Error
No route matches [GET] "/produtos"

Rails.root: /Users/osx/Documents/Estudo/Alura/Curso_Ruby_on_Rails/lojadecamisetas

Application Trace | Framework Trace | Full Trace
Routes

Routes match in priority from top to bottom

Helper    HTTP Verb    Path    Controller#Action
Path / Url        
Path Match
produtos_path    POST    /produtos(.:format)    
produtos#create

new_produto_path    GET    /produtos/new(.:format)    
produtos#new

produto_path    DELETE    /produtos/:id(.:format)    
produtos#destroy

busca_produto_path    GET    /produtos/busca(.:format)    
produtos#busca

root_path    GET    /    
produtos#index
7 respostas

Oi Carlos, Tudo bem? Cola o código do seu routes.rb aqui por favor?

Rails.application.routes.draw do
  resources :departamentos
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html

  # get "[o nome que queremos para a URL]" => "[nome do Controller]#[nome da página]"
  # url no navegador=/produtos     nome do diretorio=produtos  pagina=index
  # para criar a controller va ao terminal e digite - rails generate controller produtos


  resources :produtos, only: [:new, :create, :destroy] # resources :produtos cria todas as rotas usada e mais outras, o only limita quais serao criadas. Os links podem ser alterados, verificar e corrigir se necessario
  get "/produtos/busca" => "produtos#busca", as: :busca_produto 
  root "produtos#index"

end

Carlos, o seu erro foi claro, eu pedi o routes só pra confirmar mesmo. Veja, você não tem rota GET que aponte para o /produtos, mas no root você tem o produtos#index, ou seja, no GET / você acessa a listagem de produtos.

O erro aconteceu por que de alguma forma você mandou um GET para /produtos e o /produtos só aceita POST. Entendeu?

Ainda não entendi.

O formulário está na url /produtos/new e você está acessando apenas /produtos. Testa isso pra mim?

Mas a rota para o new não esta sendo criada pelo resources???

Está sim Carlos, mas você testou como eu pedi a cima? O problema do seu erro pelo que eu estou vendo é que você está acessando uma URL do jeito errado.