Введите имя в текстовое поле, но введите идентификатор? - PullRequest
0 голосов
/ 01 января 2011

У меня есть форма с полем text_ в моем приложении, где я ввожу название книги. Книга уже существует в моей базе данных. Как я могу представить идентификатор книги в форме вместо названия?

Я должен упомянуть, что я не хочу использовать выбор коллекции здесь, потому что я хочу, чтобы это в конечном итоге было полем автозаполнения.

1 Ответ

0 голосов
/ 01 января 2011

Вы должны обработать эту логику с помощью автоматического выбора.

$('.book_search').live('keyup.autocomplete', function(){
  $(this).autocomplete({
    source : '/ajax_functions/book_search',
    select : function(event, ui){
      book_id = ui.item.id;
      label = ui.item.value;

      $(this).before(label); // replace with text
      $(this).before('<input name="books'+[book_id]" type="hidden" value="'+user_id+'">');
      $(this).remove();
      return false;
    }
  });
});

Вы автозаполнение JSON:

books = []
Book.search(params[:term]).each do |b|
  books << { :label => b.name, :id => b.id }
end

render :json => books

Это будет делать, что вы хотите.Вам все еще нужно будет реализовать логику сервера, чтобы добавить новые книги, которые еще не существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...