【问题标题】:Rails 4 - Sending Google Maps API JSON return val to controllerRails 4 - 将 Google Maps API JSON 返回值发送到控制器
【发布时间】: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


    【解决方案1】:

    如果您使用隐藏输入字段。那么你可能想要使用

    $('#distance').val(totalDistance)
    

    因为,您正在尝试分配文本;这可能行不通。而且,您必须使用 .val() 来设置/获取输入字段的值。

    参考:

    1. http://api.jquery.com/val/
    2. http://api.jquery.com/text/

    【讨论】:

    • 这是一个有价值的答案,会有所帮助,但我担心在这种情况下它对我的问题没有帮助。在我的操作中,控制器端需要采取哪些步骤?
    • 你能检查传递给控制器​​的参数吗?这样,您可以检查在哪个字段中传递了什么值。然后在控制器中,相应地获取 has 值。 params['something']
    • 我更新了我的问题,以更好地展示我所拥有的。我能够访问参数并将它们分配给已经使用我拥有的两个输入字段的实例变量,然后在我的视图中看到它们也非常好。其他参数都通过了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2021-10-12
    • 2023-03-26
    • 2013-12-02
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多