Что ж, это очень хороший вопрос, потому что переписывание кода на 2 разных языках не очень сухо, если не сказать больше.
Эта проблема возникает очень часто, особенно для проверок, которые СЛЕДУЕТ выполнять на клиенте, чтобы обеспечить мгновенную обратную связь, и ДОЛЖНЫ быть выполнены на сервере в целях безопасности.
На стороне клиента у вас нет выбора для языка и вы должны использовать JavaScript. Это подразумевает, что если вы хотите повторно использовать свой код, вам понадобится хотя бы версия JavaScript.
Один из вариантов - использовать HotRuby http://hotruby.yukoba.jp/ для запуска (большого) подмножества Ruby непосредственно в клиенте. Интересно, что это очень эффективно: http://ejohn.org/blog/ruby-vm-in-javascript/ и поэтому должно соответствовать вашим потребностям. Аналогично RubyJS http://www.ntecs.de/projects.html преобразует код Ruby в JavaScript. Еще один - rb2js http://rb2js.rubyforge.org/.
Другой вариант - запустить интерпретатор JavaScript на вашем сервере, используя движок SpiderMonkey http://www.mozilla.org/js/spidermonkey/ или механизм v8: http://code.google.com/p/v8/, оба из которых очень эффективны.
Наконец, вы можете конвертировать JavaScript в Ruby, используя RKelly: http://tenderlovemaking.com/2007/04/15/converting-javascript-to-ruby-with-rkelly/.
Я полагаю, что первый вариант проще реализовать и понравится большинству программистов Rails, так как один пишет только код на Ruby. Второй вариант может быть более эффективным на клиенте, но за счет других недостатков на сервере. Третий вариант может быть наиболее эффективным и больше подойдет для программистов JavaScript или для повторного использования существующего кода JavaScript.
Хотя это выходит за рамки первоначального вопроса (который касается Rails), я также хотел бы указать на JavaScript MVC http://javascriptmvc.com/, который полностью предотвращает эту проблему. Иногда решением проблемы является ее устранение.