En su controlador
def index
@autocomplete_items = Model.all
end
En su opinión, al igual que lo ha hecho con una ID adicional para el selector ...
<% semantic_form_for(@education) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.input :college, placeholder: "Update Education", id: "auto_complete" %>
</div>
<%= f.submit "Submit", class: "btn btn-large btn-primary" %>
<% end %>
Y lo más importante, pasar la variable @autocomplete_items
instancia definida en su controlador en una variable de Javascript en su vista:
<%= javascript_tag "var autocomplete_items = #{ @autocomplete_items.to_json };" %>
Esto serializar sus datos y que sea utilizable JSON para la función TYPEAHEAD a utilizar.
En cuanto a la TYPEAHEAD, simplemente pase ese objeto (@autocomplete_items
) como JSON para el Javascript de este modo:
<script type="text/javascript">
jQuery(document).ready(function() {
$('#auto_complete').typeahead({source: autocomplete_items});
});
</script>
Además hay una Autocomplete gem for Rails 3 que trabajará directamente con sus modelos en lugar de hacer pasar el objeto a tu Javascript Incluso hay un ejemplo de Formtastic en la documentación.
Editar: Parece que no leí toda la pregunta! Lamentablemente, los atributos de datos HTML5 actualmente no son compatibles con Formtastic. Sin embargo, hay un separate branch que incluye soporte para estos atributos.
Aparte de eso siempre hay simplemente pegando con buen ol' HTML/ERB para las características dinámicas como este ...
<input type="text" class="span3" style="margin: 0 auto;" data-provide="typeahead" data-items="8" data-source='<%= @autocomplete_items.to_json %>'>
EDIT 2: he acabo de dar cuenta dos cosas. Primero, la forma en que pasaba el objeto JSON a una variable Javascript (ver el ejemplo). En segundo lugar, el ejemplo anterior que usa atributos de datos HTML5 será no que funcionará con el plugin Typeahead de Twitter, pero funcionará con el complemento jQuery UI Autocomplete.
No he leído toda su pregunta! He actualizado mi respuesta en consecuencia. –