If the most important thing for you is uptime but you still want to stay on the cheap, my suggestion is to use a node balancer from rackspace and then two (or more) different servers from different cheap providers for your nodes.
This is a good way to get the best uptime for your money, if you can replicate your website or app on more servers.
You're going to get a lot of detailed suggestions but I think what you need is something a little higher-level. Like danmaz74 said, uptime is a big factor in figuring out what you need. How critical is your site to your customers? Social networking, while you don't want failures all the time, is not something someone will reject on the basis of one or two 404s or something. You're going to pay for really reliable service, so be really realistic on this.
Second, what is your site built on? That makes a big difference too. Rails can use Heroku, but they've had a few outages recently due to those Amazon outages recently. There's some pretty good shared hosting providers that will give you pretty high uptime, but you'll hit a pretty solid wall at some point as far as site performance goes. A VPS or something like a Linode box works, but only for Linux-based hosting.
This decision is really best made by your developer, if that's not you. Otherwise, if you're the developer but not real experienced at this, you're going to have a hard time splitting time between your product and figuring out how to use EC2, Heroku, or Linode - don't prematurely optimize, just get some shared hosting by a decent host and go from there. Your site probably won't jump from 5 to 20,000 visitors a day, so you can scale slowly (and keep your sanity).
If you're still not sure, provide more details and we can help you figure out where you can host and how much in resources you really need to get started. Hope this helps!