Heilan P Cardoso
72 posts
|
Relacionamento parece ser um dos maiores problemas de quem está
começando a programar em Rails. Pelo menos pra mim, tá bastante
complicado. Parece novela mexicana…
Tenho as seguintes tabelas :
controller : telefones_controller.rb
- GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
verify :method => :post, :only => [ :destroy, :create, :update ],
:redirect_to => { :action => :list }
def list
@clientes = Cliente.find(:all, :conditions => [“id = ?”, params[:cliente]])
@telefone_pages, @telefones = paginate :telefones, :per_page => 5, :conditions => [“id = ?”, params[:cliente]]
end
def show
@telefones = Telefone.find(params[:id])
end
def new
@clientes = Cliente.find(:all, :conditions => [“id = ?”, params[:cliente]])
@telefone = Telefone.new
@telefonetipos = Telefonetipo.find(:all).collect{ |t| [t.tipotel, t.id] }
end
def create
@telefone = Telefone.new(params[:telefone])
if @telefone.save
flash[:notice] = ‘Telefone was successfully created.’
redirect_to :action => ‘list’
else
render :action => ‘new’
end
end
def edit
@clientes = Cliente.find(:all, :conditions => [“id = ?”, params[:cliente]])
@telefone = Telefone.find(params[:id])
@telefonetipos = Telefonetipo.find(:all).collect{ |t| [t.tipotel, t.id] }
end
def update
@telefone = Telefone.find(params[:id])
if @telefone.update_attributes(params[:telefone])
flash[:notice] = ‘Telefone was successfully updated.’
redirect_to :action => ‘show’, :id => @telefone
else
render :action => ‘edit’
end
end
def destroy
Telefone.find(params[:id]).destroy
redirect_to :action => ‘list’
end
end
Detalhe :
Não foram feitas modificações nos controllers clientes.rb e telefone_tipos.rb
Quando salvo telefones de um cliente, esta mensagem de erro aparece :
Tentei fazer tudo certo desta vez. Procurei leitura a respeito, modifiquei o codigo varias vezes…
Por favor, solicito mais uma vez a ajuda de vocês.
Obrigado, Obrigado, Obrigado !
|
Heilan P Cardoso
72 posts
|
Xi. Esqueci do mais importante :
Os models…
cliente.rb
telefone.rb
class Telefone class Telefone < ActiveRecord::Base
belongs_to :cliente
belongs_to :telefonetipo
end
telefonetipo.rb
class Telefonetipo class Telefonetipo < ActiveRecord::Base
has_many :telefones
end
|
Mereghost
1476 posts
|
Tem como postar a view também?
Você está pegando o valor de cliente_id de onde?
|
Heilan P Cardoso
72 posts
|
Mereghost :
Você está pegando o valor de cliente_id de onde?
Eu pensei que has_many e belongs_to faziam esse relacionamento.
Na verdade, o que quero fazer é o seguinte :
Quero cadastrar telefones de um cliente. Um cliente pode ter vários telefones. Um telefone tem vários tipos (fixo residencial, fixo comercial, movel, etc…). Mas só posso cadastrar os telefones após o Cliente constar no Cadastro de Clientes.
Postei todos os controllers, as views e os models no sendspace.
http://www.sendspace.com/file/b6m1v1
Obrigado pela atenção dispensada
|
Heilan P Cardoso
72 posts
|
Amigos :
Consegui resolver o meu problema. Foi suado e com uma gambiarra horrorosa, mas foi.
Obrigado a todos que me ajudaram.
|
samarone lopes
7 posts
|
Poste sua solução por favor, mas o rails lida perfeitamente com os relacionamentos que vc está usando. Essa nomeclatura em portugues pode dar umas tosqueiras as vezes, assim como a fuga do padrão dos nomes dos campos nas tabelas.
|