2015-03-25 4 views
-1

В моем Rails application.js У меня есть два javascripts, что они делают, это автопопуляция моей регистрационной формы. Первая основана на том, что попадает в мое текстовое поле emp_id, когда что-то помещается туда, и оно соответствует тому, что у меня есть в моей другой таблице, и оно вытаскивает имя пользователя и person_id и помещает их в соответствующие текстовые поля. Теперь у меня есть мой второй javascript, который смотрит на данные в user_id text_field, потому что теперь с первого javascipt у него есть данные в нем. Но единственный способ получить эту вторую работу - это изменить число и нажать вкладку, тогда она будет заполните мой менеджер_first_name text_field ... Является ли это способом, чтобы первый javascipt вытащил из себя постоянные данные, а второй реагировал на данные автоматически, вне зависимости от меня, нужно щелкнуть по нему или изменить person_id text_field? Любая помощь будет принята с благодарностью!Есть ли способ связать их вместе, чтобы они одновременно работали вместе?

Это мой контроллер для пользователя, это методы в моих javascipts.

класс UserController < ApplicationController

def populate_form 
    @visual = Visual.find_by_id(params[:emp_id]) 
    @emp_first_name = @visual.first_name 
    @person_id = @visual.pds_alias 

    render :json => { 

     :emp_first_name => @emp_first_name, 
     :person_id => @person_id 

    } 

    end 

    def populate_manager 
    @manager = Manager.find_by_person_id(params[:person_id]) 
    @mgr_first_name = @manager.mgr_name 

    render :json => { 

     :mgr_first_name => @mgr_first_name 
    } 

    end 
end 

Вот мой взгляд

<div class='row form-group'> 
    <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'> 
    <%= f.text_field :emp_id, tabindex: 1, id: 'emp_id', autofocus: true, placeholder: t('login_label'), class: 'form-control' %> 
    </div> 
</div> 

<div class='row form-group'> 
    <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'> 
    <%= f.text_field :emp_first_name, tabindex: 1, id: 'emp_first_name', autofocus: true, placeholder: t('login_label'), class: 'form-control' %> 
    </div> 
</div> 



<div class='row form-group'> 
    <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'> 
    <%= f.text_field :person_id, tabindex: 1, id: 'person_id', autofocus: true, placeholder: t('login_label'), class: 'form-control' %> 
    </div> 
</div> 



<div class='row form-group'> 
    <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'> 
    <%= f.text_field :mgr_first_name, tabindex: 1, id: 'mgr_first_name', autofocus: true, placeholder: t('login_label'), class: 'form-control' %> 
    </div> 
</div> 

А вот мой App.js

$(document).ready(function(){ 

    $('#emp_id').change(function() { 
     var url = "/user/populate_form?emp_id="+$(this).val(); 
     $.getJSON(url, function(data) { 
      if(!(data.emp_first_name === undefined)) 
      $('#emp_first_name').val(data.emp_first_name); 
      if(!(data.person_id === undefined)) 
      $('#person_id').val(data.person_id); 
     }); 
     } 
    ); 
    }); 

$(document).ready(function(){ 

    $('#person_id').click(function() { 
     var url = "/user/populate_manager?person_id="+$(this).val(); 
     $.getJSON(url, function(data) { 
      if(!(data.mgr_first_name === undefined)) 
      $('#mgr_first_name').val(data.mgr_first_name); 
     }); 
     } 
    ); 
    }); 
+0

Tl: dr, но не можете ли вы просто вызвать функцию 2 в конце функции 1? –

+0

Как бы я мог это сделать, если бы вы показали мне? @Max Williams – sNOWsYSTEM

ответ

1

Как об этом (при условии, что у вас есть данные, объект, но не массив, даже если вы это сделаете, вы можете использовать Enumerable), у вас нет использовать Javascript Ajax для этого,

def populate_form 
    @visual = Visual.find_by_id(params[:emp_id]) 
    @emp_first_name = @visual.first_name 
    @person_id = @visual.pds_alias 
    @manager_name = Manager.find_by_person_id(@person_id).mgr_name 

    render :json => { 

     :emp_first_name => @emp_first_name, 
     :person_id => @person_id, 
     :mgr_first_name => @manager_name 

    } 
end 
+0

Я пробовал это, но вижу, что поле person_id равно null .. Загрузка менеджера (40.6ms) SELECT «EMP_DIRECT». * FROM «EMP_DIRECT» WHERE «EMP_DIRECT». «PERSON_ID» IS NULL AND ROWNUM <= 1 @ Ronak Jain – sNOWsYSTEM

+0

Отредактировал мой ответ –

+0

Это работало, спасибо вам большое! @Ronak Jain – sNOWsYSTEM

Смежные вопросы