Flashes sind in Rails ein schöner Weg, um den Benutzer über Ereignisse zu benachrichtigen. Zufällig bin ich dabei im Web über diesen Helper gestolpert. Nette Sache, funktioniert allerdings nicht ganz wie erwartet, wenn man noch zusätzlich das Human Attribute Override Plugin benutzt. Die Attributnamen wurden dabei vom Flash-Helper nicht korrekt angezeigt. Glücklicherweise lies sich dieses Problem leicht lösen. Der geänderte Helper sieht nun also so aus:
if flash[:notice]
flash_to_display, level = flash[:notice], 'notice'
elsif flash[:warning]
flash_to_display, level = flash[:warning], 'warning'
elsif flash[:error]
level = 'error'
if flash[:error].instance_of? ActiveRecord::Errors
flash_to_display = message
flash_to_display << activerecord_error_list(flash[:error])
else
flash_to_display = flash[:error]
end
else
return
end
content_tag 'div', flash_to_display, :class => "flash "
end
error_list = '<ul class="error_list">'
errors.each_full do |m|
error_list << "<li> </li>"
end
error_list<< '</ul>'
end
Nun werden auch die mit attr_human_name
definierten Attributnamen in den Meldungen dargestellt.
One response to “Rails flash-helper”
Um die Error Messages durchzu itereiren ist dies besser:
errors.each do |attr,m|