Javascript 如何将数组从js传递到控制器
我的javascript文件Javascript 如何将数组从js传递到控制器,javascript,ruby-on-rails,ruby,backbone.js,Javascript,Ruby On Rails,Ruby,Backbone.js,我的javascript文件app/assets/javascript/pages/books\u page.js中有一个数组: var booksPage = Backbone.Model.extend({ defaults: { authors: [] } ... 如何将其作为参数传递给控制器。我的控制器的路径是app/controllers/books\u controller.rb 我想我可能需要一个ajax请求,并尝试了以下操作,但不起作用: $.ajax({
app/assets/javascript/pages/books\u page.js
中有一个数组:
var booksPage = Backbone.Model.extend({
defaults: {
authors: []
}
...
如何将其作为参数传递给控制器。我的控制器的路径是app/controllers/books\u controller.rb
我想我可能需要一个ajax请求,并尝试了以下操作,但不起作用:
$.ajax({
type: "post",
url: "/books_controller",
data: { list_authors: this.get('authors') },
});
具体来说,我不确定url需要是什么。非常感谢你在这里的帮助。谢谢。键入:“POST”,
url:`/books/${this.id}`、//或'/books/'+this.id,
数据:{
_方法:“放”
}
这将把您路由到BooksController#update
。您还需要将\u方法
条目合并到数据对象中
“注意:由于使用GET和POST以外的HTTP方法提交表单在浏览器中不受广泛支持,因此所有其他HTTP方法实际上都是使用_method参数中指定的方法通过POST发送的。Rails会自动检测并对此进行补偿。”——您可以使用
JSON.stringify
,并从ControllerJSON.parse(params)
解析它
主干(和jQuery)应该为您完成所有繁重的工作。在模型中设置:
var booksPage = Backbone.Model.extend({
urlRoot: '/books',
...
});
然后调用实例将数据发送到服务器:
// Get or create `books` as a `booksPage` instance as usual...
// Then make some changes to `books` using `books.set(...)`...
books.save();
为什么不直接使用
类型:'put'
?@muistooshort这是一项古老的工作,它深入到Rails中,以解决浏览器支持不足的问题。@muistooshort它至少在Rails中被引用过!但是您没有使用
@muistooshort shhh,不要让Rails知道!“在分析发布的数据时,Rails将考虑特殊的_方法参数”。\u方法
用于POST请求,而不仅仅是表单提交。举个例子,一个remote:true
表单发送回一个AJAX请求。但是url呢???@Jadoo我不知道你的url,只要确保传递正确的参数并正确获取它们就可以了。
// Get or create `books` as a `booksPage` instance as usual...
// Then make some changes to `books` using `books.set(...)`...
books.save();