nat*_*ft1 7 parameters ajax jquery get ruby-on-rails
这使我在几个不同的场合感到困惑,每次我都在努力在互联网或万维网上找到一个好的答案.让我们说在我的javascript文件中我有一个变量
var myLoc = { lat: 35, lon: -110 }
Run Code Online (Sandbox Code Playgroud)
我从使用地理定位得到了什么.我想将此信息发送到后端,以便将其与我要创建的特定帖子相关联.
假设我的路线就是这样:
resources :users do
resources :posts
end
Run Code Online (Sandbox Code Playgroud)
我不知道这是不是正确的方法,但想到的是这样的:
$.get('/users/' + JSON.stringify(myLoc) + '/posts/new', function() {console.log("please work")});
Run Code Online (Sandbox Code Playgroud)
我的问题是:
A.这应该有用吗?
B.这是正确的方法吗?
C.您可以将这样的前端内容发送到后端的任何路由吗?
非常感激.
您可以get通过查询字符串向页面发送信息,然后可以使用此字段填充new视图中的字段,该字段最终提交给创建操作.
但是,这也将返回响应中新操作视图的主体,如果您使用它来异步拉出该页面以进行对话或其他操作,则可能需要这样做.
如果您正在使用此ajax调用来创建帖子,那么可能会更好,post以便/create在posts控制器上执行操作.
然后你可以用JSON发送数据作为a post,params当你的控制器去解析它并创建帖子时,对象将转换成哈希.
js在视图中:
var url = '/users/' + userId + '/posts/create';
var myLoc = { 'lat': 35, 'lon': -110 };
$.ajax({
type: "POST",
url: url,
data: myLoc
});
Run Code Online (Sandbox Code Playgroud)
在routes.rb中:
match 'users/:user_id/posts/create' => 'posts#create', :via => :post
Run Code Online (Sandbox Code Playgroud)
在posts_controller.rb中:
def create
post = Post.new(params[:myLoc])
if post.save!
render :status => 200
else
# exception handling
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17819 次 |
| 最近记录: |