jquery - 使用 jQuery ajax get 将 params 中的数据发送到 Rails 后端

标签 jquery ruby-on-rails ajax parameters get

这多次让我感到困惑,每次我都努力在互联网或万维网上找到一个好的答案。假设我的 javascript 文件中有一个变量

var myLoc = { lat: 35, lon: -110 }

这是我通过使用地理定位之类的东西得到的。我想将此信息发送到后端,以便将其与我要创建的特定帖子关联起来。

假设我的路线是这样的:

resources :users do
  resources :posts
end

我不知道这是否是正确的方法,但我想到的是这样的:

$.get('/users/' + JSON.stringify(myLoc) + '/posts/new', function() {console.log("please work")});

我的问题是:

A.这应该有效吗?
B. 这是正确的方法吗?
C. 你能将这样的前端内容发送到后端的任何路由吗?

非常感谢。

最佳答案

您可以通过查询字符串使用 get 将信息发送到页面,然后可以使用它来填充表单所在的 new View 中的字段最终提交给创建操作。

但是,这也会在响应中返回新操作 View 的正文,如果您使用它来异步拉入该页面以进行对话框或其他内容,您可能会需要它。

如果您使用此 ajax 调用来创建帖子,则将 post 发送到帖子 Controller 上的 /create 操作可能会更好。

然后,您可以将 JSON 数据作为 post 发送,当您的 Controller 解析它并创建帖子时,该对象将转换为 params 哈希。

View 中的js:

var url = '/users/' + userId + '/posts/create';
var myLoc = { 'lat': 35, 'lon': -110 };

$.ajax({
  type: "POST",
  url: url,
  data: myLoc
});

在routes.rb中:

match 'users/:user_id/posts/create' => 'posts#create', :via => :post

在 posts_controller.rb 中:

def create
  post = Post.new(params[:myLoc])
  if post.save!
    render :status => 200
  else
    # exception handling
  end
end

关于jquery - 使用 jQuery ajax get 将 params 中的数据发送到 Rails 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19698997/

相关文章:

javascript - 更改 URL 和内容而不刷新 django

php - JavaScript 与 PHP 组合

javascript - 如何将 'toggle' 事件绑定(bind)到元素

ruby-on-rails - 在使用 Webrat 进行测试时如何捕获到其他域的重定向?

jquery - 为什么我从 jQuery UI 得到 "Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method ' close'"

ruby-on-rails - 在任何来源中均找不到 nokogiri-1.6.7.1

ruby-on-rails - 使用 mongoid 根据条件获取嵌入元素

javascript - 单击获取 HTML 节点(不一定是元素)

jquery - 跨度占据整行

javascript - 搜索 div 及其所有子项内的文本