Ответ 1
В соответствии с вашими требованиями я бы сказал, что вам действительно не нужен ajax, так как большая часть обработки будет выполнена с использованием JS (чтобы попросить пользователя получить доступ к их местоположению, проанализировать ответ и т.д.), я бы используйте JS для установки файла cookie, который затем увидит Rails).
В вашем контроллере
def action
@lat_lng = cookies[:lat_lng].split("|")
end
На ваш взгляд
<%- unless @lat_lng %>
<script>
getGeoLocation();
</script>
<%- end %>
В одном из ваших файлов javascript
function getGeoLocation() {
navigator.geolocation.getCurrentPosition(setGeoCookie);
}
function setGeoCookie(position) {
var cookie_val = position.coords.latitude + "|" + position.coords.longitude;
document.cookie = "lat_lng=" + escape(cookie_val);
}
Обратите внимание, что ни один из вышеперечисленных тестов не показывает, имеет ли пользователь браузер, поддерживающий геолокацию, или если пользователь предоставил (или отклонил) разрешение на использование своего местоположения и что файл cookie будет cookie сеанса, и что JS не проверяет, установлен ли файл cookie. Чтобы установить более сложную информацию о cookie, посмотрите http://www.quirksmode.org/js/cookies.html. Для получения дополнительной информации о GeoLocation с помощью javascript см. http://diveintohtml5.info/geolocation.html