Вам просто нужно добавить немного AJAX к тому, что у вас уже есть:
$ ->
$('#personNumber').focusout(show_message)
show_message = ->
id = encodeURIComponent($('#personNumber').val())
$.ajax
url: '/path/to/your/controller/' + id + '/name'
type: 'get'
success: (data) ->
$('#persondetails').html(data.name)
error: ->
# Do something sensible
Затем вы бы перенаправили /path/to/your/controller/:id/name
на метод контроллера вроде этого:
def your_method
#... look up params[:id] and leave the person in `person`
if(person)
render :json => { :name => person.name }, :status => :ok
else
render :json => { :msg => 'some error message' }, :status => :not_found
end
end
Если вы хотите иметь возможность искать имена, основываясь не на идентификаторе, а на других вещах, вы можете добавить некоторую гибкость, например:
$ ->
$('#personNumber').focusout(show_message)
show_message = ->
$.ajax
url: '/path/to/your/controller'
type: 'get'
data: { id: $('#personNumber').val() }
success: (data) ->
$('#persondetails').html(data.name)
error: ->
# Do something sensible
Затем маршрут /path/to/your/controller
к методу контроллера, как описано выше, и добавьте немного логики к your_method
, чтобы иметь возможность найти person
, основываясь на других вещах, которые могут быть params
.
Возможно, вы захотите добавить «загрузку»... "сообщение также.Вы можете показать «loading ...» <div>
перед вызовом $.ajax
и скрыть его в обратном вызове complete
от $.ajax
.