My answer may require you to change quite a bit of stuff, but why struggle with this when there is a Gem you can use to do most, if not all, of what you are trying to do? Here's a Rails Cast: http://railscasts.com/episodes/382-tagging?view=asciicast
Use this Gem: Acts-as-taggable-on
https://github.com/mbleigh/acts-as-taggable-on
The only thing I haven't figured out yet is multiple tags but this should work for you.