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

Erro ao criar classe de produto no formulário

Estou tendo problemas ao criar o formulário. Quando tento criar o formulário recebo um erro de método não definido:

undefined method `produtos_path' for #<#<Class:0x007f937ab85af0>:0x007f937a2e14f8>

Extracted source (around line #1):
<%= form_for Produto.new do |f| %>

Mas se eu mudo a forma de criar o formulário para:

<%= form_for :produto do |f| %>

a página renderiza normalmente, o que pode estar acontecendo?

3 respostas

Descobri o que estava causando problemas, porém não entendo porque isso ocorre.

Percebi que no meu arquivo routes.rb, a url configurada não correspondia exatamente ao nome do controller e por isso, por convenção o Rails não fez os endereçamentos corretos. Por Exemplo:

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

Estava me retornando o erro.

Funcionou normalmente quando troquei para:

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

O que achei estranho foi justamente eu ter que usar a url igual ao nome do controller porque achei que o arquivo routes.rb fosse justamente para eu customizar quais controllers/métodos devem ser executados pel os endpoints que eu quero.

Alguma idéia de como fazer funcionar sem os endpoints serem necessáriamente iguais aos nomes do controller?

solução!

Oi Bruno,

Desculpa a demora mas só vi agora essa dúvida.

Para fazer o endereçamento sem que os endpoints sejam iguais é só fazer:

get "itens" => "produtos#index" as: :produtos

Abraço!

Obrigado Joviane =)

Abraço!