I have a 4-year-old and a 2-year-old and both are wonderful sleepers. With both, I did bath, then jammies, then story, then song, then bed. When they were still nursing, I would always nurse before bath. That way they never fell asleep nursing (except during those first couple weeks when they eat all the time!) With my son, I rocked and sang to him till he fell asleep. Then I laid him down. We did this until he was probably 6 or 7 months old. I laid him down in my bed when he was asleep because we coslept. When he was about 7 months old (when I felt he was tough enough), I moved him to his own crib and put him down awake. It took a few nights of crying it out and he was fine. My daughter was more independent. I tried to rock her to sleep, but she is not a cuddler. At a couple months, she was squirming and squirming while I was singing. I just laid her down in my bed and she fell asleep. She went down on her own from that point on. Again, we moved her to her own bed when she was 6 or 7 months old.
I think the key is the same routine every night (without fail). My son will still start to yawn when I start singing his song. It's like magic.
Good luck!