如何将值从js传递到Rails中的hidden_​​field?

时间:2019-07-18 21:34:58

标签: javascript ruby-on-rails mapbox

我使用rails 5.2和mapbox进行地理编码

我尝试通过js传递纬度和经度,但无济于事

我不明白它为什么不起作用的原因

我的代码:

<%= form_for(@place, :remote => true, html: { role: 'form', multiple: true }) do |f| %>

  <%= f.hidden_field :longitude %>
  <%= f.hidden_field :latitude %>
  <div class="margin-top-40">
    <div id='map' style='height: 300px;'></div>
    <script>
        mapboxgl.accessToken = 'accessToken';
        var map = new mapboxgl.Map({
        container: 'map',
        style: 'mapbox://styles/mapbox/streets-v11'
        });

        var lng;
        var lat;
        var lngDisplay = document.getElementById('place_longitude');
        var latDisplay = document.getElementById('place_latitude');

        var marker = new mapboxgl.Marker({
          'color': '#314ccd'
        });

        map.on('click', function(e) {

          marker.setLngLat(e.lngLat).addTo(map);

          lng = e.lngLat.lng;
          lat = e.lngLat.lat;

          lngDisplay.textContent = lng;
          latDisplay.textContent = lat;
        });
    </script>
  </div>

  <div class="form-group">
    <%= f.submit 'Save', data: {disable_with: 'Save...'}, class: 'btn btn-s'%>
    <%= link_to 'Back', :back, class: 'btn btn-d' %>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:1)

发现了问题所在

lngDisplay.textContent = lng;
latDisplay.textContent = lat;

需要更改为:

  lngDisplay.value = lng;
  latDisplay.value = lat;