Problema com scaffold  XML
Índice dos Fóruns » Ruby & Ruby on Rails
Autor Mensagem
cleriston
JavaGuru
[Avatar]

Membro desde: 06/02/2007 10:54:37
Mensagens: 234
Offline

Olá pessoal!
Estou iniciando com Rails... Fiz o seguinte scaffold

Depois fiz o migrate e deu tudo certo

depois fiz

fiz o migrate e depois startei o server.

Quando entro no caminho http://localhost:3000/plantas ele funciona normal, mas quando entro em
http://localhost:3000/especies dá o seguinte erro
NameError in Especies#index

Showing app/views/especies/index.html.erb where line #22 raised:

undefined local variable or method `new_especie_path' for #<ActionView::Base:0x474b1e4>

Extracted source (around line #22):

19:
20:

21:
22: <%= link_to 'New especie', new_especie_path %>

RAILS_ROOT: D:/INSTAN~1.0-W/rails_apps/bonsai
...

Porque o de "especies" dá este erro e o de "plantas" não?
Leozin
JWizard
[Avatar]

Membro desde: 18/06/2005 21:01:26
Mensagens: 2310
Localização: São Paulo/SP
Offline

por acaso tu alterou o teu routes.rb?

http://www.leozin.com.br/blog
[ICQ]
cleriston
JavaGuru
[Avatar]

Membro desde: 06/02/2007 10:54:37
Mensagens: 234
Offline

nao alterei nao
Leozin
JWizard
[Avatar]

Membro desde: 18/06/2005 21:01:26
Mensagens: 2310
Localização: São Paulo/SP
Offline

tenta acessar o endereço http://localhost:3000/especies/new

ele funciona?

http://www.leozin.com.br/blog
[ICQ]
cleriston
JavaGuru
[Avatar]

Membro desde: 06/02/2007 10:54:37
Mensagens: 234
Offline

sim, o new ele faz certinho, até inclui no banco... na hora de fazer o show ele dah pau
muito estranho neh...
Obs.: to usando o instantrails
cleriston
JavaGuru
[Avatar]

Membro desde: 06/02/2007 10:54:37
Mensagens: 234
Offline

descobri o problema.
Eu fiz varios testes, com mais campos, com outros tipos de campos, só funcionou quando nao utilizei o nome "especie"

Eu fiz o codigo abaixo e funcionou.


Especie deve ser alguma palava chave e ele se embanana :S

Comédia
cleriston
JavaGuru
[Avatar]

Membro desde: 06/02/2007 10:54:37
Mensagens: 234
Offline

Em outro gupo me falaram q era para adicionar este inflector (ainda nao descobri o q é)
Enfim, deu certo da seguinte forma :
victorcosta
JavaGuru
[Avatar]

Membro desde: 07/01/2007 01:29:37
Mensagens: 220
Localização: Recife - PE
Offline

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:



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'

This message was edited 1 time. Last update was at 14/03/2009 17:06:58


Meu blog com tutoriais de jQuery
http://www.victorcisneiros.com/blog/

Outros projetos
http://www.todolistr.com
http://www.bibliasocial.com
http://www.dota2feedback.com/
http://www.posjogo.com.br/
[MSN]
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline

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

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
 
Índice dos Fóruns » Ruby & Ruby on Rails
Ir para:   
Powered by JForum 2.1.8 © JForum Team