AutoComplete Railscast的评论部分中有一个问题没有得到答复,我需要帮助解决同样的问题。 http://railscasts.com/episodes/102-auto-complete-association-revised?view=comments#comment_159833
我正在使用来自Rails控制器的数据源实现jQuery-UI自动完成,而Rails控制器又调用Foursquare API。 Foursquare API需要2个参数(“查询”和“纬度/经度”值)。
它发送给Rails控制器的自动完成小部件的默认参数是包含“查询”的参数[:term]。我需要自动完成窗口小部件从另一个text_field中提取值(让我们称之为geocode_location字段)并将其作为“latlong”参数传递。
如此有效,对Rails控制器的GET请求将是
请求网址:http://localhost:3000/foursquare?ll=37.7+-122.5&term=McDonalds
而不是
请求网址:网址:http://localhost:3000/foursquare?term=McDonalds
以下是我当前的coffeescript文件。我需要尝试传递extraParams或某种方式让它知道传递一个名为:latlong的参数。如何使用Coffeescript和此类数据源进行此操作?
$('[type="text"][name*="[location]"]').autocomplete
source: $('[type="text"][name*="[location]"]').data('autocomplete-source')
focus: (event, ui) ->
event.preventDefault()
$(this).val ui.item.label
select: (event, ui) ->
event.preventDefault()
$(this).val ui.item.label
$(this).siblings('[name*="[foursquare_id]"]').val ui.item.value
我对Coffeescript语法不太熟悉,但非常感谢这里的帮助。 这里有一个类似的问题,但自动完成结果的数据源是不同的。 jQuery UI - Autocomplete with extra params - returned data
答案 0 :(得分:1)
终于在很多很多小时之后得到了它。有关如何应用其他参数传递到服务器端Rails控制器的语法,请参见下文。如此有效,我现在可以得到这个请求URL:http:// localhost:3000 / foursquare?ll = 37.7 + -122.5& term = McDonalds。希望这有助于某人。
$('[type="text"][name*="[location]"]').autocomplete(
source: (request, response) ->
$.ajax
url: $('[type="text"][name*="[location]"]').data('autocomplete-source')
data: {term: request.term, ll: this.element.siblings('[name*="[geocode_location]"]').val()}
contentType: "application/json; charset=utf-8"
success: (data) ->
response $.map(data, (item) ->
value: item.value
label: item.label
address: item.address
)
focus: (event, ui) ->
event.preventDefault()
$(this).val ui.item.label
select: (event, ui) ->
event.preventDefault()
$(this).val ui.item.label
$(this).siblings('[name*="[foursquare_id]"]').val ui.item.value
).data("autocomplete")._renderItem = (ul, item) ->
$("<li>").data("item.autocomplete", item).append("<a>" + item.label + "<br>" + item.address + "</a>").appendTo ul