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