2
respostas

404 ao enviar o post

Quando o post acontece, vejo no console um 404 Not found,

No navegador, após o post vejo: uninitialized constant Produtos Rails.root: C:/Sites/lojadecamisetas

Na saída do rake routes, tenho

      Prefix Verb URI Pattern             Controller#Action
    produtos POST /produtos(.:format)     produtos/#create
produtos_new GET  /produtos/new(.:format) produtos#new
             GET  /produtos(.:format)     produtos#index
        root GET  /                       produtos#index

produtos_controller.rb

class ProdutosController < ApplicationController
  def index
    @produtos = Produto.order(:preco).limit 2
  end

  def create
    #usar simbolo economiza memoria por não gerar a string em memória
    valores = params.require(:produto).permit!

    produtos = Produto.create valores
  end
end

routes.rb

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

  post "produtos" => "produtos/#create"

  get "produtos/new" => "produtos#new"

  get "produtos" => "produtos#index" #default não precisaria definir esta rota
  root "produtos#index"
end

new.html.erb

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>

<%= form_for Produto.new do |f| %>
  Nome <input type="text" name="produto[nome]"><br/>

  Descrição
  <textarea name="produto[descricao]"></textarea></br>

  Quantidade
  <input type="numer" name="produto[quantidade]"></br>


  Preço
  <input type="number" name="produto[preco]" step="0.01"/><br/>

  <button type="submit">Criar</button>
<% end %>
</body>
</html>

Mais uma coisa, aproveitando, edição da pergunta aqui está com bug, ele corta vários caracteres no final da pergunta quando edito. :D

2 respostas

Oi Clayton, tudo bem? Dá uma olhada na rota, você escreveu: produtos/#create, quando devia ser só produtos#create. Talvez seja só esse detalhe.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software