我是javascript / coffeescript / jQuery的新手,但想在我的Rails应用程序中实现以下功能。我该怎么做才能让它发挥作用?
文本字段的ID为personNumber
,我希望它在People
表中查找值的关联名称,并将其发布到页面中,标识为{{1 }}
persondetails
答案 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}}回调中。