簡體   English   中英

重定向到新頁面時保留以前的值

[英]Keep previous values when redirecting to a new page

我正在使用以下javascript在地圖上選擇一個點,並使用此點填充地址字段。 地址字段用於標記中的rails中,以便按地址進行搜索:

<%= form_tag search_path, method: "get", id: "other-form"  do %>
  <%= text_field_tag :location, params[:location], id:"address" %>
  <%= submit_tag "submit", :id=> "my-button" %>
  <%= text_field_tag :search_other, params[:search] %>
  <%= hidden_field_tag :lat %>
  <%= hidden_field_tag :lng %>
<% en d%>


<div id="map_canvas"></div>

<script>
  var map;
  var geocoder;
  var mapOptions = { center: new google.maps.LatLng(0.0, 0.0), zoom: 4,
                     mapTypeId: google.maps.MapTypeId.ROADMAP };

  function initialize() {
      var myOptions = {
          center: new google.maps.LatLng(38.89103282648849, -97.646484375),
          zoom: 4,
          mapTypeId: google.maps.MapTypeId.ROADMAP
      };

      geocoder = new google.maps.Geocoder();
      var map = new google.maps.Map(document.getElementById("map_canvas"),
                                    myOptions);
      google.maps.event.addListener(map, 'click', function(event) {
          placeMarker(event.latLng);
      });

      var marker;
      function placeMarker(location) {
          if(marker) { //on vérifie si le marqueur existe
              marker.setPosition(location); //on change sa position
          } else {
              marker = new google.maps.Marker({ //on créé le marqueur
                  position: location,
                  map: map
              });

              var circle = new google.maps.Circle({
                  map: map,
                  radius: 24140,    // 15 miles in metres
                  fillColor: '#08aa23'
              });
              circle.bindTo('center', marker, 'position');
          }

          document.getElementById('lat').value=location.lat();
          document.getElementById('lng').value=location.lng();
          getAddress(location);
          var cookie_val = ('other_lat_lng', location.lat() + "," + location.lng())
        document.cookie = "other_lat_lng=" + escape(cookie_val);

      }

      var a_message = "<%= I18n.t 'map_other' %>"

      function getAddress(latLng) {
          geocoder.geocode( {'latLng': latLng},
              function(results, status) {
                  if(status = google.maps.GeocoderStatus.OK) {
                      if(results[0]) {
                          document.getElementById("address").value = results[0].formatted_address;
                      } else {
                        document.getElementById("address").value = a_message;
                      }
                  } else {
                    document.getElementById("address").value = status;
                  }
              });
      }
  }
  google.maps.event.addDomListener(window, 'load', initialize);
</script>


<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

然后在結果頁面上,我有一個link_to ,它使用地圖和搜索表單重定向到另一個頁面。 重定向時,我希望這個新頁面保持上一次搜索中選擇的相同點。

您可以通過將:lat:lng傳遞給link_to來公開它們,然后使用一些數據標簽將它們公開給JS端。

<%= link_to "new link", new_page_path(lat: params[:lat], lng: 
params[:lng]) %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM