这多次让我感到困惑,每次我都努力在互联网或万维网上找到一个好的答案。假设我的 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/