Rails在javascript中形成查找详细信息并发布到页面

时间:2012-02-19 18:58:52

标签: javascript ruby-on-rails jquery coffeescript

我是javascript / coffeescript / jQuery的新手,但想在我的Rails应用程序中实现以下功能。我该怎么做才能让它发挥作用?

  • 编辑表单的文本字段时,会调用一个函数,然后在表中查找该值并返回页面上div的值。

文本字段的ID为personNumber,我希望它在People表中查找值的关联名称,并将其发布到页面中,标识为{{1 }}

persondetails

1 个答案:

答案 0 :(得分:1)

您只需要将a bit of 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

如果您希望能够根据ID之外的其他内容查找名称,则可以添加以下灵活性:

$ ->
    $('#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添加更多逻辑,以便能够根据可能{{1}的其他内容找到person }。

您可能还想添加“loading ...”消息。您可以在致电params之前显示“正在加载...”<div>,并将其隐藏在$.ajax的{​​{1}}回调中。