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 - 没有完全集成

JQuery 和 Rails 日历插件

Rails 6 和 Jquery 插件错误:$(...).validate 不是函数

在 Rails 应用程序中结合 Scriptaculous 和 jQuery