2016-12-29 189 views
1

我有application.html.erb里面的变量:■方法(some_method)的<script>将变量从application.html.erb传递给控制器​​在Rails中?

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

有没有办法将它传递到我的控制器之一(posts_controller.rb)“?

我需要得到经度和纬度是在脚本内部生成到posts_controller。我怎样才能做到这一点?

编辑:(我没有提到它,但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_methodlongitudelatitude将在params[:longitude]params[:latitude]可用。

您可以在some_method中设置实例变量(例如@lat@lon),这些变量将在相应的视图中可用。

+0

Eric,你好!感谢您的回应。我没有详细说明(这完全是我的错),但some_method不是一个GET请求,但POST请求。你能否提出另一种方法将变量传递给非GET方法?我编辑我的帖子以添加方法。 – Iggy

+0

谢谢!遗憾的是,我一直在问,但现在,我用jQuery来发布'longitude'和''为POST' latitude'属性,我怎么能抓住它'some_method'(和视图上显示呢?)非常赞赏的帮助! – Iggy

+0

不客气。查看更新。 –

相关问题