Rails 中的 HTML5 地理定位

Dan*_*van 5 html javascript ruby-on-rails geolocation

我正在尝试通过 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
Run Code Online (Sandbox Code Playgroud)

我目前收到您在下面的屏幕截图中看到的错误。我认为我的表单可能需要一些工作,另外我需要在我的控制器中添加代码来获取值。正如你所看到的,有点失落,任何建议都会很棒。

错误信息

Tom*_*Tom 0

据我了解,您希望根据用户位置显示位置。这意味着您像已经做的那样找到用户,将纬度和经度写入 shidden_form_field并通过 ajax 将此表单发送到index您的 (!) 操作locations_controller(而不是创建操作)。

使用地理编码器,控制器看起来像这样:

@locations = Location.near([params[:lat], params[:lon]])
.
.
.
respond_to do |format|
 format.html {}
 format.js {}
end
Run Code Online (Sandbox Code Playgroud)

然后你只需要将新的插入@locations到索引视图中