Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

No route matches [POST] "/produtos/9/edit"

Olá!

Eu alterei o routes.rb:

Rails.application.routes.draw do
  resources :departamentos
  get "produtos/busca", to: "produtos#busca", as: :busca_produto
  resources :produtos, only: [:new, :create, :destroy, :edit]
  root to:"produtos#index"
end

E fiz a mudança no index:

...
<td><%= button_to "Alterar", edit_produto_path(produto), method: :edit, 
            class:"btn btn-primary" %></td>
...

Por fim, no controller:

def edit
        id = params[:id]
        @produto = Produto.find(id)
        @departamentos = Departamento.all
        render :new
    end

Mas, ao clicar em Alterar, ele reclama da rota POST:

No route matches [POST] "/produtos/9/edit"

Pelo que vi do vídeo, meu código está igual ao do instrutor! O que poderia ser?

Obrigado

2 respostas
solução!

Oi, Mauricio, tudo bem?

Na sua view de index você usou button_to, certo? Na aula foi usado o link_to.

Esse erro acontece porque por padrão o button_to é um POST enquanto o link_to é um GET.

Como sua view de edit precisa de um GET para trazer essa view pra tela está quebrando e a rota de POST não é encontrada mesmo.

Você pode trocar para link_to ou trocar o verbo HTTP do button_to.

button_to (....), method: :get

Verdade! Eu não tinha percebido a questão aí vi na transcrição o button_to também e mantive! Vou manda uma sugestão de correção. Obrigado, Henrique!