Контроллеры Stimulus и вообще любой javascript запускаются не вашим ruby сервером, а браузером пользователя.
Если вы хотите получить от него значение, вам понадобится чтобы сделать ajax вызов и получить его от обычного контроллера рельсов.
Что-то вроде:
async getUserLocation() {
let data = new FormData();
let position = await navigator.geolocation.getCurrentPosition();
data.set('position', position);
await fetch('/api/notify_location', {method: 'POST', body: data, credentials: true});
}
И вы должны направить его на бэкэнд:
scope 'api' do
post 'notify_location' => 'location#notify'
end
и получите его в контроллере
class LocationController < ApplicationController
def notify
# do as needed, you will be able to get the session here
# because the fetch function was passed credentials: true
# but beware, this request won't match `request.xhr?` because
# fetch is not XMLHTTPRequest.