Bonds played in an era with way more SBs. In Ruth's time, a few people a year (if that) stole 40 bases. It seems it was much easier to steal bases early in the Bonds era (when he was racking them up) or there wasn't a premium put on SBs in the Ruth era. I don't think SBs play a big part in a ballplayer's value anyway. If they lead to runs, great, but in that case let's just measure runs. I think SBs has become way overrated in the Fantasy Baseball era of the game. However, Bonds' defense is a huge plus and I don't think enough is being made of it. If you concede that their offensive numbers are pretty close, then Bonds should get the edge due to how much better he was defensively than Ruth.
But I don't know that I concede that they are close.
1918 Ruth: 11 HRs in 317 ABs, tied for MLB lead with Walker (11 in 414)
1919 Ruth: 29 HRs in 432 ABs, leader; 2nd Cravath (12 in 214)
1920 Ruth: 54 HRs in 458 ABs, leader; 2nd Sisler (19 in 631)
1921 Ruth: 59 HRs in 540 ABs, leader; 2nd Meusel (24/598) and Williams (24/547)
1922 Ruth: 35 HRs in 406 ABs, 4th; 1st Hornsby (42/623), 2nd (39/585), 3rd Walker (37/565)
1923 Ruth: 41 HRs in 522 ABs, tied for MLB lead with Williams (41 in 535)
1924 Ruth: 46 HRs in 529 ABs, leader; 2nd Fournier (27/563) and Houser (27/562)
1925 Ruth: 25 HRs in 359 ABs, tied for 3rd; 1st Hornsby (39/504), 2nd Meusel (33/624)
1926 Ruth: 47 HRs in 495 ABs, leader; 2nd Wilson (21 in 529)
1927 Ruth: 60 HRs in 540 ABs, leader; 2nd Gehrig (47 in 584)
1928 Ruth: 54 HRs in 536 ABs, leader; 2nd Bottomley (31/576) and Wilson (31/520)
1929 Ruth: 46 HRs in 499 ABs, leader; 2nd Klein (43 in 616)
1930 Ruth: 49 HRs in 518 ABs, 2nd; 1st Wilson (56 in 585)
1931 Ruth: 46 HRs in 534 ABs, tied for MLB lead with Gehrig (46 in 619)
1932 Ruth: 41 HRs in 457 ABs, 2nd; 1st Foxx (58 in 585)
1933 Ruth: 34 HRs in 459 ABs, 2nd; 1st Foxx (48 in 573)
1934 Ruth: 22 HRs in 365 ABs, tied for 11th; 1st Gehrig (49 in 579)
1935 Ruth: 6 HRs in 72 ABs
Ruth held at least a share of the HR title in 11 of 18 seasons. In 1918 when he tied for the lead he was still pitching. Same in 1919 when he smoked the 2nd place HR hitter. He didn't have the ABs to qualify in 1918, but he would have been 1st in SLG and 2nd in OBP, and that's after exactly 361 ABs in the previous four seasons when he pitched 900 innings. In 1918 he had more BBs than Ks, so that's why they probably moved him away from pitching.
From 1919 to 1934 (16 seasons), he led the league in SLG 11 times, finished 2nd twice and 4th once. He led the league in runs 8 times, finished 2nd once and 5th once. He led the league in RBI 6 times, finished 2nd twice, 3rd twice and 5th once. He led the league in OBP 10 times, finished 2nd once, and 3rd once. He would have tied for 2nd in 1934 but didn't have the ABs to qualify.
1986 Bonds: 16 HRs in 413 ABs, tied for 80th; 1st Barfield (40 in 589)
1987 Bonds: 25 HRs in 551 ABs, tied for 52nd; 1st Dawson (49/621) and McGwire (49/557)
1988 Bonds: 24 HRs in 538 ABs, tied for 23rd; 1st Canseco (42 in 610)
1989 Bonds: 19 HRs in 580 ABs, tied for 39th; 1st Mitchell (47 in 543)
1990 Bonds: 33 HRs in 519 ABs, tied for 8th; 1st Fielder (51 in 573)
1991 Bonds: 25 HRs in 510 ABs, tied for 27th; 1st Canseco (44/572) and Fielder (44/624)
1992 Bonds: 34 HRs in 473 ABs, tied for 5th; 1st Gonzalez (43 in 584)
1993 Bonds: 46 HRs in 539 ABs, tied for MLB lead with Gonzalez (46 in 536)
1994 Bonds: 37 HRs in 391 ABs, 5th; 1st Williams (43 in 445)
1995 Bonds: 33 HRs in 506 ABs, tied for 12th; 1st Belle (50 in 546)
1996 Bonds: 42 HRs in 517 ABs, tied for 9th; 1st McGwire (52 in 423)
1997 Bonds: 40 HRs in 532 ABs, tied for 7th; 1st Griffey (56 in 608)
1998 Bonds: 37 HRs in 552 ABs, 18th; 1st McGwire (70 in 509)
1999 Bonds: 34 HRs in 355 ABs, tied for 25th; 1st McGwire (65 in 521)
2000 Bonds: 49 HRs in 480 ABs, 2nd; 1st Sosa (50 in 604)
2001 Bonds: 73 HRs in 476 ABs, 1st; 2nd Sosa (64 in 577)
2002 Bonds: 46 HRs in 403 ABs, 4th; 1st Rodriguez (57 in 624)
2003 Bonds: 45 HRs in 390 ABs, tied for 3rd; 1st Rodriguez (47/607) and Thome (47/578)
2004 Bonds: 45 HRs in 373 ABs, 4th; 1st Beltre (48 in 598)
2005 Bonds: 5 HRs in 42 ABs; 1st Jones (51 in 586)
2006 Bonds: 26 HRs in 367 ABs, tied for 45th; 1st Howard (58 in 581)
Bonds held at least a share of the HR title twice, once in 1993 when he and Gonzalez hit 46 and the other the magical 73 HR season.
From 1986 to 2004 and 2006 (20 seasons), Bonds led the league in SLG 6 times and finished 3rd twice. He finished 2nd in runs 3 times, 4th twice, and 5th once. He finished 3rd in RBI once and 4th once. He finished 4th in SBs once. Finally, he led the league in OBP 5 times, finished 2nd once, 4th five times and 5th twice. He would have led the league in OBP in 2006 but didn't have the ABs to qualify.
Based on those numbers, there is absolutely no way you can say Bonds was a better hitter than Ruth. As good as his defense was, that doesn't make up for how dominating Ruth was against the competition of his day. Jimmy Foxx and Rogers Hornsby were the only two players that gave Ruth a run for his money as sluggers of their day. Bonds has been outslugged by Canseco, McGwire, and Fielder in his career on a consistent basis. From a slugging standpoint, Bonds is closer to Aaron than Ruth.
When Ruth hit 60 HRs, the average SLG in the league was around .390. When Bonds hit 73 HRs, the 30th-ranked team in the league, the Baltmore Orioles, slugged .380. Only two other teams slugged less than .390. It is unbelievably easier to hit for power in the Bonds era. Ruth was a way better hitter. Ruth is the best ballplayer in history. I don't even know that Bonds is 2nd, but I think I've thrown enough out there for one post.
Another book that attempts to compare players from different eras is Leveling the Field.
According to them, Ruth hit 1,157 HRs with the adjusted numbers. It only has through 2001 for Bonds as it was published in 2002, but estimating his numbers due to what they have through 2001, he'd have about 800-820 HRs.