Я бы выбрал вариант 3, и это то, что я сейчас использую во многих программах. Есть некоторые плагины, которые достигают той же цели. Один из них - this, но большинство из них будет работать нормально.
В принципе, вам нужно будет создать плагин, настроить его для просмотра текстового поля и затем установить его на какой-то маршрут.
Это код из какого-то старого проекта я получил под рукой:
$("input#send_detail_product_id").autocomplete("products/auto_complete_for_send", {
formatItem:formatItem,
callback:processProduct;
});
плагин я не принимаю функции обратного вызова, поэтому я его немного и работать его взломали. Я могу отправить ему функцию для обработки после выбора файла.
На контроллере Rails вы можете указать некоторую логику и вернуть результаты поиска либо в виде JSON, либо через файл View для форматирования. В моем случае последний позволяет мне изменить вид продукта.
Это очень легко сделать с добавленным бонусом к работе с ненавязчивым кодом.