0

AutoComplete Railscast のコメント セクションに未回答の質問があり、同じ問題について助けが必要です。 http://railscasts.com/episodes/102-auto-complete-association-revised?view=comments#comment_159833

Railsコントローラーからのデータソースを使用してjQuery-UI Autocompleteを実装しています.RailsコントローラーはFoursquare APIを呼び出しています。Foursquare API には 2 つのパラメーター (「クエリ」と「緯度/経度」値) が必要です。

Rails コントローラに送信される Autocomplete ウィジェットのデフォルト パラメータは、「クエリ」を含む params[:term] です。別の text_field (geocode_location フィールドと呼びましょう) から値を取得し、それを「latlong」パラメーターとして渡すには、Autocomplete ウィジェットが必要です。

つまり、Rails コントローラーへの GET リクエストは次のようになります。

リクエスト URL: http://localhost:3000/foursquare?ll=37.7+-122.5&term=McDonalds

そしてそうではない

リクエストURL: URL: 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 - 追加のパラメーターを使用したオートコンプリート - 返されたデータ

4

1 に答える 1

2

何時間もかけてようやく手に入れました。サーバー側の 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
于 2012-11-01T21:54:15.597 に答える