Oh, jeez, that's thorny. Really sorry. But to quote Ann Landers: no one can take advantage of you without your permission. I think you're so upset by this because you thought you were bending over backwards to be a good friend, and now you're starting to feel taken advantage of -- like your friendship matters more to you than to her, because why the hell would she buy a $37K truck when she can't even be bothered to pay you a measly $400/mo.? I think that is perfectly natural and understandable. But I think the way out of the situation is to try to take a step back from the immediate emptions and look at how your relationship with her has developed, what patterns you have fallen into.
Step one is recognizing that your values and priorities are what you do, not what you say. She has shown you, as clearly as she possibly can, that she values her toys over her commitments to you. And you have responded with, "oh, gee, that's ok." So to be straight: there is not one single damn thing you can say to her to persuade her to pay the rent. Because your behavior for all these years has already persuaded her that she doesn't have to -- that no matter how hurt/frustrated/angry/adamant/whatever you are now, you'll end up letting it go. Because you always have. So why in the world would she expect this time to be any different? You've already said it won't be!
If you want to change her behavior, you need to change your own. And since your words are meaningless, that means either insisting on automatic transfers from her bank account to yours, or evicting her. But that only works if you are actually willing to evict her, and you say you're not -- in which case, insisting that she behave differently will again be meaningless, because you already know that you won't follow through. So if you are not willing to boot her out, your only remaining choice is to decide, affirmatively, that her friendship is worth letting her live with you for free for as long as she wants. That means stop demanding rent, which she is clearly unwilling to pay, and you are unwilling to collect. Just tell her straight up that she has a room for as long as she wants it, and ignore the Giant Honking Truck in front. That doesn't sound like a good option? Well, then, I'm sorry to say, your only other option is to go back to eviction.
My impression from the vent above -- and believe me, I get the frustration -- is that you are infantalizing her, treating her as less competent, less able than you. You pity her because she came from a poor background, because she didn't have much, and because she chose a career path in which she continues to not make/have much money; and then you are frustrated and sad for her because she makes poor spending decisions* with the little that she does have. This has led you to assume a superior/parental role with her: it's your job to "fix" her, to help her see the error of her ways, to help her learn to manage her money better; when she fails to fulfill her responsibilites, your immediate response is to pry into the details of her finances so you can "help" her figure out why she is making poor decisions (a/k/a "control"). And she is responding just as any powerless teenager would: with rebellious behavior ("I'll buy myself a truck if I damn well want to!"), followed by pitiful excuses ("I'm so poor and weak, please pity me, I just don't know what I am doing") when called on her behavior. And when you let her get away with it, you are in fact further weakening her, because you are teaching her that she can skate through life by infantalizing herself -- that emphasizing her own helplessness allows her to avoid her responsibilities.
So, again, if you want to change the dynamic, that starts with you. Start from the assumption that she is a grown-ass woman, who is competent to run her own life as she sees fit, and capable of dealing with any consequences. Tell yourself that her finances are none of your business -- it is not your responsibility to "fix" her, and indeed it is a huge invasion of her privacy to pry and attempt to control how she spends her money. The only thing she owes you, and the only thing you can ask of her, is that she pays the rent, in full, when it is owed. And because she is an adult, if she fails to fulfill that responsibilty, she can pay late fees; if she repeatedly fails to come through, she can be evicted and find another place to live. Because this is how adults operate -- we don't always get it right the first time, but we deal with the consequences, and realize, damn, that was a bad idea, and we don't do that again. So if you really want to do right by her, you will help her to learn to behave like the competent, capable adult she can be, not continue to prop her up in an eternal childhood.
I just saw your follow-up post, so let me help clarify: people can be surprised by truck taxes and Christmas and all of those things because they know that if they run short of cash, their dear friends will cut them $400 of slack, and they'll be able to skate by.
I actually completely disagree about the emotional discussions here. I think that is entirely appropriate for an initial conversation with a friend who has behaved poorly a couple of times. But we are beyond that here -- there is a strong pattern that has developed over years, and so that "I feel" gets you exactly what you got here: she is guilting you into forgiving the rent, and you are guilting her into paying it, and the "winner" is the one who makes the other feel bad enough to cave (until next month, when the cycle starts again). This is yet another example of the adult-child dynamic you guys have going here. I think you need to step away from all of the emotional entanglement here -- stop with the talking, stop with the explaining, stop with the trying to be understood, stop with the "helping." Just tell her what you expect, unemptionally and dispassionately, and follow through if that expectation is not met.
*As you define them -- as another poster pointed out, she's spending her money exactly how she wants to. It's just not on you.