rails 和 jquery post
Posted
技术标签:
【中文标题】rails 和 jquery post【英文标题】:rails and jquery post 【发布时间】:2011-05-20 08:54:01 【问题描述】:我正在使用这个 jquery 帖子
navigator.geolocation.getCurrentPosition(function(position)
$.post('/marketplace',latitude: position.coords.latitude, longitude: position.coords.longitude)
);
路线:
post '/marketplace' => 'pages#marketplace'
在控制器Rails.logger.debug('Jquery.POST' + params.inspect)
打印在控制台下面
Started POST "/marketplace" for 127.0.0.1 at 2011-05-20 13:23:16 +0300
Processing by PagesController#marketplace as
Parameters: "latitude"=>"44.508851", "longitude"=>"33.600509"
Jquery.POST"latitude"=>"44.508851", "longitude"=>"33.600509", "controller"=>"pages", "action"=>"marketplace"
萤火虫还说纬度 44.508851 和经度 33.600509 已成功发送。
但在视图中我没有我的帖子数据,= params.inspect
"action"=>"marketplace", "controller"=>"pages"
如何在控制器中访问我的 jquery post 数据?
*更新
@lat = request.params[:latitude]
@long = request.params[:longitude]
视图中都为 nil :(
【问题讨论】:
【参考方案1】:这可能是 csrf 令牌的问题吗?您确定它与您的其余 POST 数据一起发送吗?
如果您使用的是 jquery-rails 插件,请务必获取最新版本,因为处理方式已经发生了一些变化。如果您在文档的head
中有令牌,该插件应该自动将其注入到每个 xhr POST 请求中。查看the github 页面了解更多信息。
【讨论】:
我更新了我的 rails.js,没有任何变化。 Rails 调试器说数据存在于参数中,但是当我试图访问它时,我得到的都是零。我想知道也许 js post 数据会异步传入控制器,并且视图已经呈现为零,而 $.post 数据还没有传入控制器? 对异步的怀疑,在通过控制器传递的 Rails 日志参数中,不知道为什么我在视图中得到 nil :(【参考方案2】:这将创建 xhr request.for 你必须创建的
@lat_long=:lat=>request.params[:latitude],:lng=>request.params[:longitude]
render :text=> @lat_long and return false
在您的控制器和 jquery 中使用上述行
$.post('/marketplace',latitude: position.coords.latitude, longitude: position.coords.longitude,function(data)
var lat=data.lat;
var lng=data.lng
);
【讨论】:
以上是关于rails 和 jquery post的主要内容,如果未能解决你的问题,请参考以下文章
jquery-datatables-rails。响应式扩展和移动视图
rails3 rails.js 和 jquery 捕获 ajax 请求的成功和失败
Bootstrap(和 jquery)、webpack、rails - 没有完全集成