当用户尝试在适当的导轨表单中输入车牌号时,我正在尝试使用自动完成功能。我一直在经历easyautocomplete和jquery-ui自动完成。但是,似乎无法让它们中的任何一个工作,因为 license_number 属性是一个嵌套属性,我找不到将其全部关联的方法。
许可证.rb
class Permit < ApplicationRecord
self.primary_key = :permit_id
has_one :vehicle
accepts_nested_attributes_for :vehicle
车辆.rb
class Vehicle < ApplicationRecord
self.primary_key = :vehicle_id
belongs_to :permit, optional: true
许可证表格
<%= form_with(model: permit, local: true) do |form| %>
...
<div class="field">
<%= form.fields_for :vehicle do |f| %>
<%= f.label :license_number %>
<%= f.text_field :license_number %>
<% end %>
</div>
...
车辆模型具有一个名为 license_number 的属性。如何从该模型中获取所有许可证编号并将其关联,以便使用自动完成功能?
编辑
许可证.咖啡
jQuery ->
$('#vehicle_license_number').autocomplete
source: vehicle.collect( |car| [car.license_number, car.vehicle_id])
我已经发布了一些相同性质的答案,只是在JS而不是Rails中。
基本上,对每个对象元素与数组进行自己的搜索。
source: function(req, resp){
var results = [];
$.each(car, function(key, val){
if(val.license_number.indexOf(req.term) == 0){
results.push(val);
}
});
resp(results);
}
希望有帮助。
如果您输入的是板块的一部分,而不是数字的开头,则可以使其更通配符,例如:val.license_number.indexOf(req.term) >= 0