Zunächst einmal müssen Sie wissen, dass die Helfer text_field_with_auto_complete
und button_to_function
nicht wirklich Benutzeraktionen behandeln, sondern nur HTML- und JavaScript-Code generieren. Nur generierter JavaScript-Code kann mit dem Benutzer interagieren. In diesem Fall erzeugt die folgende text_field_with_auto_complete
(ungefähr):
<input type="text" id="participant_name" name="participant[name]" size="15" />
<div id="participant_name_auto_complete" class="auto_complete"> </div>
<script type="text/javascript">
var participant_auto_completer = new Ajax.Autocompleter (
'Participant',
'Name',
'/contentcom/discussions/get_users_for_auto_complete',
{method: 'GET', param_name: 'search'}
);
</script>
Der obige Code ist, dass der Benutzer in seinem Browser erhält. Wenn Sie die für text_field_with_auto_complete
lesen, dann werden Sie sehen, dass wir die Option :after_update_element
verwenden können. Mit dieser Option können wir den Namen der JavaScript-Funktion angeben, die aufgerufen wird, wenn der Benutzer einen der vorgeschlagenen Werte auswählt.
Was wir tun müssen:
- eine JavaScript-Funktion schreiben, dass wird von der automatischen Vervollständigung Feld überall vom Benutzer ausgewählten Wert anzuzeigen.
- Anruf
text_field_with_auto_complete
mit :after_update_element
Das ist, wie die Vorlage aussehen wird:
<ul id="selected_participant_container"></ul>
<%= text_field_with_auto_complete :participant, :name, {}, {
:url => {:controller => "contentcom/discussions", :action => :get_users_for_auto_complete},
:method => :get,
:param_name => 'search',
:after_update_element => 'afterParticipantSelected'
}%>
<script type="text/javascript">
function afterParticipantSelected (el, value) {
var container = document.getElementById ('selected_participant_container');
container.innerHTML = value;
}
</ Script>
Nun, wenn ein Benutzer einen Wert in dem Autocomplete-Feld wählt, wird es in dem Elemente angezeigt werden, mit id = selected_participant_container
Natürlich können Sie Methoden verwenden, die von tokland vorgeschlagen werden.
Aber ich würde Ihnen empfehlen, zuerst die Grundlagen von HTML und Javascript zu erlernen.