O problema eh q o Rails considera as formas singular e plural das palavras pra fazer as rotas, e vc usando a palavra ‘especie’ acabou gerando inconsistencia pq o rails eh adaptado pra palavras ingles
Se vc for no console e digitar:
'especie'.pluralize
=> "especies"
'especies'.singularize
=> "especy"
Note q o plural de ‘especie’ pro rails eh ‘especies’, mas o singular de ‘especies’ eh ‘especy’
Quando vc faz o scaffold com ‘especie’ ele gera a classe ‘Especie’ e as view com as rotas no formato ‘new_especie_path’, ‘especies_path’, etc
No routes.rb ele vai gerar um codigo ‘map.resources :especies’, quando vc rodar o servidor ele vai ver esse codigo e vai singularizar ‘especies’ para gerar as rotas, soh que o singular de ‘especies’ eh ‘especy’ (pelas regras do ingles), ai ele gera a rota ‘new_especy_path’
Se vc trocar ‘new_especie_path’ por ‘new_especy_path’ nas viewspára de dar erro, mas a solucao ideal eh isso q vc fez. O que vc adicionou no Inflector eh uma regra dizendo q o plural de ‘especie’ eh ‘especies’ e o singular de ‘especies’ eh ‘especie’
o problema é misturar inglês com português
o Ruby On Rails tem todos os padrões ajustados para o inglês, quando tu começa a usar nomes em português para as classes as vezes ele se perde …
Este é um dos motivos para o código no meu livro estar em inglês (claro que todo o resto do texto esta em português )
Algumas soluções para este teu problema
A primeira é a que tu usou, alterar o nome da classe para alguma que os padrões de nomenclatura do inglês não sejam um problema
Você pode também editar o arquivo config/initializers/inflections.rb e configurar o rails para saber que o plural de especie é especies, ficaria algo parecido com:
Você pode também instalar o plugin “Brazilian Rails” que ja configura o Rails para o portugês.
E a melhor de todas na minha opinião, tu pode programar em ingês, ja que fica muito extranho “if AlgumaCoisaEmPortugues” por que fica parte do código em português e parte em inglês