Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde, estou tentando usar o f.collection para chamar uma chave estrangeira porém está dando erro. Teria a possibilidade de alguém me informar como posso salvar esses dados da chave estrangeira.
Tenho dois modelos: categoria e anuncio.
create_table :categoria do|t|
t.string :nome_categoria
t.timestamps
end
e o anuncio
create_table :anuncios do|t|
t.integer :categoria_id //minha chave estrangeira
t.string :nome_anuncio
t.text :descricao
.
.
.
t.timestamps
end
Meus modelos estão da seguinte forma:
class Categorium...
attr_acessible :nome_categoria
has_many :anuncios
e
class Anuncio...
attr_acessible :categoria_id, :contato_fone..
belongs_to :categorium
Então fui em view – Anuncios _form.html.erb
<div class='field'>
<%= f.label :categoria_id %><br />
<%= f.collection_select (:categoria_id, categoria.order('categoria'),
:id, :nome, {:prompt => true})%>
Sou iniciante e estou perdido quando usar o “categorium” do modelo ou somente categoria, quando rodo a aplicação dá o seguinte erro: We,re sorry, but something went wrong.
Desde já muito obrigado.
Olá Pablo.
Antes de tudo, você possui um ambiente de desenvolvimento? Caso não, recomendo muito que tenha um.
Esta mensagem de erro, por padrão, aparece apenas em ambientes de produção.. Em ambientes de desenvolvimento você verá mensagens mais detalhadas.
Outra dúvida, se sua tabela se chama categoria, por que seu model se chama Categorium?
Se está utilizando RoR lembre-se do convention over configuration. Mude isto e use o mesmo nome para os dois.
Já sobre o seu problema, acho que está passando os parametros errados.
Supondo que mudou o nome de seu model para Categoria, tente utilizar:
<%= f.collection_select (:categoria, :gategoria_id, Categoria.order('categoria'), :id, :nome, :prompt => true)%>