The correct answer would be. Yes, I am going to buy her a rucksack. Because if you say I will buy her a rucksack, it means that you've made that decision in that particular moment, right away, without giving it a lot of thought. I may/might buy her a rucksack means that you aren't 100% sure about what you are going to give her as a present, thus the only logical solution would be using going to, because that involves a pre-made decision.