【发布时间】:2015-03-27 22:39:50
【问题描述】:
我正在尝试通过 HTML5 获取用户位置并将其传递给我的 rails 控制器。
我有下面的 JavaScript 调用元素上的 .value 并将其设置为等于相应的位置。然后,我想通过隐藏的表单字段提交这些值并将其传递给我的位置控制器,以便我可以根据用户位置填充位置。我知道这已经完成了,我也看到了一些关于它的帖子,但我没有成功。
navigator.geolocation.getCurrentPosition(GeoL);
function GeoL(position) {
document.getElementById('lat').value = position.coords.latitude;
document.getElementById('lon').value = position.coords.longitude;
}
<%= form_tag locations_path, :method=>'post' do %>
<%= hidden_field_tag 'lat', value = ''%>
<%= hidden_field_tag 'lon', value = ''%>
<%= image_submit_tag 'loc.png' %>
<% end %>
def create
"What goes here? Grab params? Is this the right action to send it to?"
end
我目前收到您在下面的屏幕截图中看到的错误。我认为我的表单可能需要一些工作,另外我需要在控制器中添加代码来获取值。正如你所看到的有点失落,任何建议都会很棒。
【问题讨论】:
-
看来您的参数(纬度和经度)已正确发送,您接下来要做什么,您没有准确发布错误消息。
-
对,对不起。 “参数丢失或值为空:位置”是错误消息。理想情况下,我想将它们传递给我的控制器,这样我就可以在我的视图中渲染它们,让控制器根据它们的位置过滤结果。我现在可以使用地理编码器 gem,但使用 ip 地址并不准确。
-
所以位置是您系统中的模型?你用的是什么宝石?
-
是的,我目前只有一个模型位置。我首先使用了 ruby geocoder gem,我用它来定位位置,但是为了让用户接近它并不是很准确。所以我正在尝试使用 HTML5 并将其传递给控制器。我希望能够显示“您距此位置 2.2 英里”或类似的内容。但是现在有了地理编码器,它已经关闭了很多。
-
我推荐
geokit-rails,它更容易,如果你愿意,我可以提供一个例子,无论如何,位置的准确性取决于设备,它是否可以访问蜂窝网络/wifi或gps
标签: javascript ruby-on-rails html geolocation