Mais uma poderosa batalha a ser travada, ahauhhuauha, estou cá eu com meus botões estudando rails, e resolvo por na mensagem de alert de erro os erros que ocorreram quando o objeto foi salvo meu snipet do rjs é algo semelhante a isso (Rails 2.3.4 e JQuery)
update.rjs
if flash[:error]
page << "alert('#{flash[:error]}')"
Quando no controller havia uma única mensagem (Erro ao atualizar dados), esse snipet funcionava muito bem, muitos vão dizer que é mais facil usar so page.alert, sim é mais facil, enfim, o código tava assim e pronto ;)
Qual a solução encontrata para mostrar os erros? Bom percorrer o array de erros e mostrar cada um em uma linha não é? Coisa facil fui lá eu
controller.rb
def update
#Preenche o objeto
if @objeto.save
#Não interessa
else
msg = "Erro ao atualizar dados \n"
@objeto.errors.full_messages.each do |error|
msg += "#{error.to_s}\n"
end
flash[:error] = msg
respond_to
end
Muito simples né, e adivinha que me apareceu no alert?
"Erro ao atualizar dados \n Data não pode ser vazio\n"
sim os "\n" apareceram no alert se mudar para o
aparece no meio o
, eu tava quase querendo joga pela janela o PC, eis que eu resolvo recorrer ao nosso grande oraculo e encontrei um post de um caboclo falando a solução, pois ele passou por esse mesmo problema, e se vcs olharem o post do blog foi la em 2007 :(, só fazem 3 anos ahauuhauhah, resumindo, o que deve ser feito é criar um metodo na classe helper
helper.rb
def get_alert_error_message
msg = "Erro ao atualizar dados \n"
@objeto.errors.full_messages.each do |error|
msg += "#{error.to_s}\n"
end
return msg
end
Reparem o código é exatamente igual
update.rjs
if @error
page.alert "#{get_alert_error_message}"
end
E acreditem, exatamente o mesmo código, funcionou da forma que eu queria :), pra quem não consegue imaginar, a variavel @error foi criada para indicar quando ocorreu um erro no RJS, para imprimir esse alerta só se ocorreu um erro.
PS: Esse post além de compartilhar essa informação, é pra eu me lembrar futuramente disso ai.
0 comentários:
Postar um comentário