module ApplicationHelper def humanise_duration(duration) raise ArgumentError, "Duration must be a number" unless duration.is_a? ActiveSupport::Duration seconds = duration.in_seconds minutes = seconds / 60 hours = minutes / 60 remaining_minutes = minutes % 60 if hours > 0 "#{hours.floor}h #{remaining_minutes.floor}m" elsif minutes > 0 "#{remaining_minutes.floor} minutes" else "#{seconds}s" end end end