Gygfil
47 posts
|
Olá todos! Boa noite.
Na view list do meu ClientController, observei que após clicar em editar para corrigir a grafia de um nome de cliente, por exemplo, de Mello para Melo, quando retorno para a list, exatamente o nome que foi editado não é mais exibido. Contudo, ao acessar a tabela clients pelo DB, vejo-o na mesma posição e salvo com a grafia correta realizada através da view edit. O que poderia estar ocorrendo e como corrigir?
Grato pela ajuda.
Gygfil
|
Adriano Dadario
229 posts
|
Gygfil
Você pode estar apenas renderizando o :action do list e não redirecionando.
Procure fazer o redirecionamento no final do método:
:)
|
Gygfil
47 posts
|
Caro Dadario.
Antes quero agradecer pela sua atenção e pedir desculpas pela demora em te dar retorno – tive “impeditivos contra-tempos pessoais”. Quanto à orientação sobre a view list, confirmo que eu não havia modificado o padrão do Rails e, se faço como voce orientou, de fato redireciona para a list, porém continua o mesmo problema “como se houvesse ocorrido um destroy” no registro editado(não ocorre, pois quando entro pelo DB o registro está lá, com a edição salva!). Me frustra o fato de parecer que tal problema só ocorreu na minha aplicação, pois, não encontrei relatos semelhantes no forum.
Mais uma vez, grato pela ajuda.
|
Shairon Toledo
1428 posts
|
Só para grantir é o id muda? ou é o mesmo?
|
Mereghost
1476 posts
|
Tem como postar o ClientController e as Views?
|
Gygfil
47 posts
|
Olá Shairon e Mereghost!
Respondendo:
1-O id não muda. Observei que o registro editado é deslocado para a última posição na view list, com as modificações realizadas com sucesso.
2-Aqui os códigos:
(ClientController)
def index
list
render :action => ‘list’
end
- 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
@client_pages, @clients = paginate :clients, :per_page => 10
end
def show
@client = Client.find(params[:id])
end
def new
@client = Client.new
end
def create
@client = Client.new(params[:client])
if @client.save
flash[:notice] = ‘Client was successfully created.’
redirect_to :action => ‘list’
else
render :action => ‘new’
end
end
def edit
@client = Client.find(params[:id])
end
def update
@client = Client.find(params[:id])
if @client.update_attributes(params[:client])
flash[:notice] = ‘Client was successfully updated.’
redirect_to :action => ‘show’, :id => @client
else
render :action => ‘edit’
end
end
def destroy
Client.find(params[:id]).destroy
redirect_to :action => ‘list’
end
end
( view list )
|