I am using rails 4. I have tried to use auto-complete in my application. But when installing autocomplete , it throws error like could not find generator autocomplete:install.
我使用的是rails 4。我尝试在我的应用程序中使用自动补全。但是在安装autocomplete时,它会抛出无法找到生成器自动完成的错误:install。
Please guide me how to use autocomplete in my application.
请指导我如何在我的申请中使用自动完成。
In View
在视图
<%= 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 %>
In Application controller
应用程序控制器
def driver_list
Driver.where(:driver_allotted => false).map{|i|[i.first_name.capitalize, i.id]}
end
I am using f.select for displaying driver list in drop down. Instead of that it will show on auto-complete.
我用f。选择在下拉菜单中显示驱动程序列表。相反,它会自动完成。
How to use auto-complete in simple form . Please Share your ideas
如何使用自动完成在简单的形式。请分享你的想法
1 个解决方案
#1
2
It's very simple:
这是非常简单的:
In view you need a text_field.
在视图中,需要一个text_field。
In your js file:
js文件中:
$( "#driver_id" ).autocomplete({ source: "/controller_name?filter_key=attr_name", minLength: 0 });
In your controller you will get params[:term]
with the text_field value:
在您的控制器中,您将获得具有text_field值的params[:term]:
if params[:term]
@drivers = Driver.where(filter_key.to_sym => params[:term]).map(&filter_key.to_sym)
end
Please DO NOT put your drivers code in application_controller, put it in driver_controller.
请不要在application_controller中放入您的驱动程序代码,将它放在driver_controller中。
#1
2
It's very simple:
这是非常简单的:
In view you need a text_field.
在视图中,需要一个text_field。
In your js file:
js文件中:
$( "#driver_id" ).autocomplete({ source: "/controller_name?filter_key=attr_name", minLength: 0 });
In your controller you will get params[:term]
with the text_field value:
在您的控制器中,您将获得具有text_field值的params[:term]:
if params[:term]
@drivers = Driver.where(filter_key.to_sym => params[:term]).map(&filter_key.to_sym)
end
Please DO NOT put your drivers code in application_controller, put it in driver_controller.
请不要在application_controller中放入您的驱动程序代码,将它放在driver_controller中。