Rails формируют детали поиска в javascript и размещают на странице - PullRequest
0 голосов
/ 19 февраля 2012

Я новичок в javascript / coffeescript / jQuery, но хочу реализовать следующее в моем приложении на Rails.На что мне обратить внимание, чтобы это работало?

  • Когда редактируется текстовое поле формы, вызывается функция, которая затем ищет значение в таблице и возвращает значение в div на странице..

Текстовое поле имеет идентификатор personNumber, и я хочу, чтобы он нашел соответствующее имя для значения в таблице People и разместил его на странице в div с идентификаторомpersondetails.

$ -> $("#personNumber").focusout(show_message)
show_message = -> $("#persondetails").html("Name will go here");  

1 Ответ

1 голос
/ 19 февраля 2012

Вам просто нужно добавить немного 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...