I'm working on leash training a lot myself right now and I find that if I walk Eugene in the street where there isn't any grass to smell he's great. Then I release him and let him sniff the grass and do whatever he wants. Repeat, repeat. Now I'm at the point where I can get him to walk nicely on a smaller path and then I release him to sniff and do whatever he wants. He seems to be understanding that in order to get what he wants he has to do what I want first. Compromise
I'm certainly no expert but that's what's working well for us.