2016-08-23 12 views
1

私は2つのフィールドを持つフォームを持っていますphonenameユーザーがajaxオートコンプリートを使って電話番号を選択すると、その電話番号に。動的フォーム - 前回のオートコンプリートに基づいてフィールドを自動入力

Watching that Railscasts episode私はajaxオートコンプリートの仕事をすることができました。

patients_controller

class PatientsController < ApplicationController 
    def index 
    @patients = Patient.order(:phone).where('phone like ?', "%#{params[:term]}%") 
    json_data = @patients.map(&:phone) 
    render json: json_data 
    end 
end 

reservations.coffee

$(document).ready -> 
    $('#patient_phone').autocomplete 
    source: "/patients/index" 

_form.erb

お名前と電話番号との関係を構築していますが、自動で名前を記入することができますどのように
<%= f.fields_for :patient, appointment.patient do |patient| %> 
    <%= patient.text_field :phone, id: 'patient_phone' %> 
    <%= patient.text_field :name %> 
    <%= f.submit %> 
<% end %> 
+0

質問はどこに電話名関係を置いていますか? – kasperite

+0

質問は、選択した電話番号に対応する名前を自動入力する方法です –

答えて

1

ソリューションの両方を変更することでした:

indexアクション

def index 
    @patients = Patient.order(:phone).where(
       'phone like ?', "%#{params[:term]}%") 
    render :json => @patients.collect { 
        |x| {:label => x.phone, 
         :value => x.phone, 
         :name => x.name} 
         }.compact 
end 

AJAXリクエスト

$(document).ready -> 
    $('#patient_phone').autocomplete 
    source: "/patients/index", messages: noResults: '', 
      results: func = -> '' 
    select: (event, ui) -> $("#patient_name").val(ui.item.name) 
    focus: (event, ui) -> $(".ui-helper-hidden-accessible").hide(); 

とIDを追加patient_nameをフォームフィールドに追加します。

1

わかりません内部オートコンプリートselectこのようなイベント

$(document).ready -> 
    $('#patient_phone').autocomplete 
    source: "/patients/index" 
    select: (event, ui) -> 
     selected_phone_number = $(event.target).val() 
     // Fill in value for name field here 

参照:http://api.jqueryui.com/autocomplete/#event-select

関連する問題