2010-12-31 5 views
0

Ich habe ein Formular mit einem text_field in meiner App, wo ich den Namen eines Buches eingeben. Das Buch existiert bereits in meiner Datenbank. Wie kann ich die ID des Buches im Formular anstelle des Namens eingeben?Geben Sie einen Namen in ein Textfeld ein, aber senden Sie eine ID?

Ich sollte erwähnen, dass ich eine Sammlung hier nicht verwenden möchte, weil ich möchte, dass dies schließlich ein Auto-Complete-Feld sein wird.

Antwort

0

Sie sollten diese Logik mit Ihrer automatischen Auswahl behandeln.

$('.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; 
    } 
    }); 
}); 

Sie sind zur automatischen Vervollständigung json:

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

render :json => books 

Dies wird tun, was Sie wollen. Sie müssen noch die Serverlogik implementieren, um neue Bücher hinzuzufügen, die noch nicht existieren.

Verwandte Themen