Что касается JavaScript, вот пример того, что я использовал в прошлом. Имейте в виду, что это запрос к службе .NET WCF, но с точки зрения javascript это не должно иметь значения.
'# autocomplete' - это простое текстовое поле html
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$('#autocomplete').autocomplete({
source: function (request, response)
{$.getJSON("URLThatReturnsJSON", {
name: extractLast(request.term),
context_id: $('.context_id').val()
}, function (msg) {
return response(msg.d);
});
}
Вот пример того, что отправляется на сервер .. (08 - пример чего-то в текстовом поле автозаполнения)
http://localhost/URLThatReturnsJSON?name=08&context_id=1
Вот пример того, что возвращается
{ "D": [ "0008", "0827", "0849", "0866", "0882", "0804"]}
По соображениям безопасности службы WCF предпочитают устанавливать имя свойства d при идентификации списка данных. Отсюда причина, по которой в моей функции ответа я упоминаю как msg.d Возможно, в ruby, вы можете просто сделать сообщение.
Редактировать
Одна вещь, которую я забыл упомянуть, это то, что в моем примере используется текстовое поле с несколькими значениями, это означает, что я пытаюсь использовать автозаполнение для более чем одной записи в текстовом поле, т.е. текстовое поле может содержать 09, bill, abc