In my opinion, the best way to train is by battling against hordes. When you're in a horde battle, you go up against six wild Pokémon at once. Depending on their level, each give you about three-hundred to two-thousand experience points. Those may not seem like much experience, but when you add them all up, it turns out to be a lot. Not only that, but when you're in horde battles, you're gaining a bunch of effort values, too. These things boost your overall stats, and make your Pokémon become stronger. Hordes also increase the chance of you getting inflected with PokéRus, as well as your chance of running into a shiny. :)
If you want to get yourself into a horde battle, then visit your favorite route and use Sweet Scent. Make sure to carry an attack that target all your opponents, by the way! Few of these would be Surf, Earthquake, Blizzard, and Heat Wave.