template - Cómo usar la aplicación jquery autocompletar en raíles
smartadmin template (1)
Estoy usando raíles 4. He intentado usar autocompletar en mi aplicación. Pero al instalar autocompletar, arroja un error como no se pudo encontrar la autocompleta del generador: instalar.
Por favor, guíame sobre cómo usar la función de autocompletar en mi aplicación.
En vista
<%= simple_form_for @vehicle_driver,remote: true, html: {class: ''form-inline form-horizontal vehicle_driver'' }, :validate => true do |f| %>
<div class="control-group string optional vehicle_driver_vehicle_code">
<label class="string optional control-label" for="vehicle_code">Vehicle</label>
<div class="controls">
<%= f.select :vehicle_id, vehicle_assign_driver, {},{} %>
<%= link_to new_vehicle_path do %>
<span class=''icon-plus-sign''></span><br>
<% end %>
</div>
</div>
<div class="control-group string optional vehicle_driver_driver_name">
<label class="string optional control-label" for="driver_name">Driver</label>
<div class="controls">
<%= f.select :driver_id, driver_list, {},{} %>
<%= link_to new_driver_path do %>
<span class=''icon-plus-sign''></span><br>
<% end %>
</div>
</div>
<div style="padding-left:15em">
<%= f.button :submit, {value:''Assign'', class: ''btn btn-primary''} %>
<span id="updated1" class="inline icon-ok hidden" style="display: none;">Assigned Successfully</span>
</div>
<% end %>
En el controlador de aplicaciones
def driver_list
Driver.where(:driver_allotted => false).map{|i|[i.first_name.capitalize, i.id]}
end
Estoy usando f.select para mostrar la lista de controladores en menú desplegable. En lugar de eso, se mostrará en autocompletar.
Cómo usar el autocompletado en forma simple. Por favor comparta sus ideas
Es muy sencillo:
A la vista necesitas un text_field.
En tu archivo js:
$( "#driver_id" ).autocomplete({ source: "/controller_name?filter_key=attr_name", minLength: 0 });
En su controlador, obtendrá params[:term]
con el valor text_field:
if params[:term]
@drivers = Driver.where(filter_key.to_sym => params[:term]).map(&filter_key.to_sym)
end
NO coloque el código de su controlador en el application_controller, póngalo en el driver_controller.