【发布时间】:2016-04-27 04:05:49
【问题描述】:
我正在使用 Google Maps JavaScript API 返回从 A 点到 B 点的距离,并且我能够成功获取该值。我还可以通过使用以下 JS 将其写入日志(使用 Google Chrome DevTools)来查看它:
console.log(totalDistance);
到目前为止,我尝试过的方法是隐藏标签并使用 JS 设置它的值:
$('#distance').text(totalDistance);
在视图中我的表单是:
<%= form_tag({ :action => 'fare', :controller=> 'page'}, {:class => 'form-horizontal center'}) do %>
<%= text_field_tag :origin, '', class: 'form-control', id: 'origin-input' %><br/>
<%= text_field_tag :destination, '', class: 'form-control', id: 'destination-input' %>
<%= hidden_field_tag :distance, '', id: 'distance' %>
<%= submit_tag "Submit" , id: 'get-route'%><!-- the id is needed for the JS -->
<% end %>
我的想法是将值作为参数传递给控制器,因此我正在检查通过我的视图传递的参数,如下所示:
<pre>
<% params.each do |key, value| %>
<%= key + "==>" + value + "\n" %>
<% end %>
</pre>
输出如下:
utf8==>✓
authenticity_token==>**omitted**
origin==>LaGuardia Airport, NY, United States
destination==>JFK Airport, NY, United States
distance==>
commit==>Submit
controller==>page
action==>fare
但正如您所见,参数 'distance' 没有传递给控制器的值。 但我确实在日志中看到了 totalDistance 的值
所以我真正需要帮助的是弄清楚我的控制器应该在做什么,如果我的 javascript 需要更改为其他内容,并且在我看来我是否应该更改任何内容。我觉得我没有正确地做到这一点。
我注意到的一件事是,当我尝试不同的事情时,我试图将 id 为“distance”的 div 设置为 totalDistance 的值,当我在表单上点击提交时,div 会显示正确的距离和,由于我现在刚刚重新加载页面,因此页面重新加载后该值不会保留。
我确实知道如何在我的控制器中从参数分配实例变量,并在我的视图中访问它们。这不是这里的问题。
【问题讨论】:
标签: javascript ruby-on-rails google-maps ruby-on-rails-4 parameters