gmaps-autocomplete-rails write Lang + Long 写入隐藏域

gmaps-autocomplete-rails write Lang + Long written to hidden field

我希望有人能帮助我,我的 gmaps-autocomplete-rails 工作正常,但我对如何将经度和纬度写入表单提交的隐藏字段感到困惑.

我可以把它写成一个只是不能使指南的这一部分正面或反面的人

以下默认方法可以通过配置替换:

位置输出器 更新UI 更新地图 这些方法用于控制gmaps数据如何用于更新页面上的UI,例如位置输出和地图位置更新。定制这些需要的。

默认逻辑(取自 GmapsCompleterDefaultAssist)是:

 defaultUpdateMap: (geometry) -> 
    map     = @map
    marker  = @marker

    map.fitBounds(geometry.viewport) if map
    marker.setPosition(geometry.location) if marker

  # fill in the UI elements with new position data
  defaultUpdateUI: (address, latLng) ->
    $(@inputField).autocomplete 'close'

    @debug 'country', @country

    updateAdr = address.replace ', ' + @country, ''
    updateAdr = address

    @debug 'updateAdr', updateAdr

    $(@inputField).val updateAdr
    @positionOutputter latLng

  defaultPositionOutputter: (latLng) ->
    $('#gmaps-output-latitude').html latLng.lat()
    $('#gmaps-output-longitude').html latLng.lng()

我认为我需要做的就是将最后一部分更改为 .val 而不是 .html

但是我不知道在哪里以及如何将它添加到 coffeescript 中。

如果我直接写入隐藏字段,我会得到以下信息:

<input id="gmaps-output-longitude" type="hidden" name="submission[longitude]">-019019992</input>

这显然不会在表单中传递,因为它不是 value=""

我试过写入 span 并进行更改以写入隐藏字段,但也没有任何乐趣。

jQuery ->

    completer = new GmapsCompleter
      inputField: '#gmaps-input-address'
      errorField: '#gmaps-error'

    completer.autoCompleteInit
      country: "us"


    $('#gmaps-output-longitude').on('change', updateChange)

updateChange = ->
  $('#submission_longitude').val($('#gmaps-output-longitude'))
  $('#submission_latitude').val($('#gmaps-output-latitude'))

非常感谢任何建议。

原来我漏掉了一点,但为了将来参考覆盖默认行为,您需要包含辅助选项并参考 coffeescript 扩展。

这是我最终的工作 coffeescript 都在一个文件中,只要确保你缩进 class。

jQuery ->
  completer = new GmapsCompleter
    inputField: '#gmaps-input-address'
    errorField: '#gmaps-error'
    assist: MyCompleterAssist


  completer.autoCompleteInit
    country: "us"



class MyCompleterAssist extends GmapsCompleterDefaultAssist
  positionOutputter: (latLng) ->
   $('#gmaps-output-latitude').val latLng.lat()
   $('#gmaps-output-longitude').val latLng.lng()