The current "state of the art" with tags is to use a token input control:
Here's the StackExchange one:
- For new users you can configure it (optionally) to drop down a list of initial suggestions. Or (like SE) you can leave it blank for users to start typing.
- For power users it's faster to type in and complete a set of tags than to scroll through a massive multi-select list.
- It's space saving.
- It allows for new tag creation (also optional), or it can enforce a predefined list of tokens (which sounds like what you're looking for).
If this meets your needs, there are several plugins out there, but one that I have used several times is jQuery tokenInput
It just uses Ajax GET or POST/JSON calls so it can be mated to Rails (or any other Ajax-supporting web stack really) easily. It is configurable with all the options above and more. It can also be configured to run without Ajax, just using client-side data.
(disclaimer: I have no affiliation with the plugin, its author, etc.)