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