2017-11-16 8 views
0

ユーザがナンバープレートの番号を適切なレールのフォームに入力しようとすると、オートコンプリート機能を使用しようとしています。私はeasyautocompleteとjquery-uiオートコンプリートを行ってきました。しかし、license_number属性がネストされた属性であり、すべての関連付けを取得する方法が見つからないため、それらのいずれかを動作させるように見えることはできません。Rails Jquery-uiネストされた属性のオートコンプリート

permit.rb

class Permit < ApplicationRecord 
self.primary_key = :permit_id 
has_one :vehicle 
accepts_nested_attributes_for :vehicle 

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> 
... 

車両モデルH license_numberという属性として設定します。そのモデルからすべてのライセンス番号を取得し、それを関連付けてオートコンプリート機能を使用できるようにするにはどうすればよいですか?

編集

permits.coffeeは

jQuery -> 
$('#vehicle_license_number').autocomplete 
    source: vehicle.collect(|car| [car.license_number, car.vehicle_id]) 
+0

は、オートコンプリートのために使用されているJavaScriptコードを入力してください。たぶん関数として 'source'を使う必要があります。そこでは、ネストされた要素とトップ要素をカスタム検索することができます。また、データの例も含めてください。 – Twisty

+0

それを忘れてしまった。私は最初に標準配列を実行しようとしましたが、autocompleteをlicense_numberフィールドに表示することさえできません。私は別のフィールドにすることができますが、ネストされた属性フィールドではありません。 –

答えて

0

私はRailsのJSではなく、この非常に同じ性質のいくつかの答えを掲載しています。

基本的に、各オブジェクト要素と配列の独自の検索になります。

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

関連する問題