2016-12-29 20 views
1

У меня есть переменная внутри application.html.erb 's <script>:Передача переменных из application.html.erb в контроллер в Rails?

... 
<script> 
    ... 
    pos = { 
    lat: position.coords.latitude, 
    lng: position.coords.longitude 
    }; 
    ... 
</script> 

Есть ли способ, чтобы передать ее одному из моих контроллеров (posts_controller.rb)' ы метод (some_method)?

Мне нужно получить как широту, так и долготу, которая сгенерирована внутри сценария в posts_controller. Как я могу это сделать?

EDIT: (я не упоминал об этом, но some_method не использует get 'some_method', но post)

#routes 
post 'some_method' => 'posts#scrape', as: :some_method 

ответ

1

запрос GET

Вы можете использовать

window.open("/posts/some_method?longitude="+pos['lng']+"&latitude="+pos['lat'],"_self") 

внутри ваш <script>.

запрос POST

С jquery, вы можете использовать:

$.post("/posts/some_method?longitude="+pos['lng']+"&latitude="+pos['lat']) 

Для ванильного JavaScript см это answer.

В some_method, longitude и latitude будет доступен в params[:longitude] и params[:latitude].

Вы можете установить переменные экземпляра (например, @lat и @lon) внутри some_method, и эти переменные будут доступны в соответствующем представлении.

+0

Hi Eric! Спасибо за ответ. Я не уточнял (это полностью моя ошибка), но some_method не является запросом GET, а запросом POST. Можете ли вы предложить другой метод передачи переменной без метода GET? Я редактировал сообщение, чтобы добавить метод. – Iggy

+0

Спасибо! Извините, что я продолжаю спрашивать, но теперь, когда я использовал jquery для отправки атрибутов 'longitude' и' latitude' для 'Post', как я могу его захватить на' some_method' (и отображать его на представлениях?) Очень ценю помощь! – Iggy

+0

Добро пожаловать. См. Обновление. –