6
respostas

me ajudem com persistência no form no método update por favor

gente eu to muito tempo ja tentando achar o erro,e pequisando pra ver se acho algo, ma ate agora nada... alguem pode me ajudar?

esse é o metodo GET quano eu clico em EDITAR

 app.get('/produtos/edit/:id', function (req, resp) {
        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        var id = req.params.id
        produtosDAO.findById(id, function (err, results) {
            console.log(JSON.stringify(results));
            resp.render('produtos/form', {
                errs: {},
                produtos: results
            });
        });
    });

e aqui o form.ejs

<html>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link href='https://fonts.googleapis.com/css?family=Raleway:800italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300|Chewy' rel='stylesheet' type='text/css'>
<body background="http://static.tumblr.com/ibcdiqw/Ie9lvg8i2/15_-_degrad___verde.png">
<div class="errors">
    <% if(errs) { %>
    <ul>
        <% for(var i = 0; i < errs.length; i++) { %>
        <li><%= errs[i].param %> - <%= errs[i].msg %></li>
        <% } %>
    </ul>
    <% } %>
</div>
<div align="center">
    <h2 style="color: #3e8f3e; font-family: 'Chewy', cursive;">CADASTRAR LIVROS NO SISTEMA</h2>
</div>
<div align="center">
<form action="/produtos" method="post" class="form-inline">
    <input type="hidden" name="id" value="pro">
    <div class="form-group" align="center">
        <br><br>
        <label for="nome">Título</label>
        <br>
        <input type="text" class="form-control" id="nome" value="<%=produtos.nome%>" name="nome" placeholder="Qual o título do livro?">
    </div>
    <br><br>
    <div class="form-group" align="center">

        <label for="preco">Preço</label>
        <br>
        <input type="text" class="form-control" id="preco" name="preco" value="<%=produtos.preco%>"  placeholder="Money, cash, facada">
    </div>
    <br><br>
    <div class="form-group" align="center">
        <label for="descricao">Descrição</label>
        <br>
        <textarea type="text" class="form-control" id="descricao" name="descricao"
                  placeholder="Como é o livro?"><%=produtos.descricao%></textarea>
    </div>
    <br><br>
    <div align="center">
        <input type="submit" class="btn btn-success" value="Guardar na Estante :)">
    </div>
</form>


</div>
</body>
</html>

agradeço a qualquer ajuda

6 respostas

Gustavo.

Está aparecendo alguma mensagem de erro no terminal ou no próprio navegador?

não... ao clicar em editar, ele fica com a url: http://localhost:3000/produtos/edit/35

e quando dou enter, não aprece os dados que eram pra estar la, e tambem quando vou salvar, ele cria um novo ao inves de substituir, isso eu sei o pq, é pq n tem id pra ele pega prasubstituir ele no banco de dados... so que pr pegar esse id, primeiramente esse metodo get ai deve funcionar, ai da pra egar o id de boa...

Ah! Entendi.

Toda vez está adicionando um novo produto porque no form o action está apontado para a rota de adicionar um novo produto. Você precisa alterar o action para a rota de edição.

Sacou? Se não entendeu de boas, só falar que explico com mais detalhes :-)

o ideal é criar uma outra pagina, e colocar um novo form apontando pra URL correta?

Recomendo você mandar apenas um parâmetro para a página, e dependendo do valor desse parâmetro você altera o action do form.

eu não to entendendo como é pra fazer...