我的javascript文件app/assets/javascript/pages/books_page.js
中有一个数组:
var booksPage = Backbone.Model.extend({
defaults: {
authors: []
}
...
我怎么能把它作为一个参数传递给我的控制器。我的控制器的路径是app/controllers/books_controller.rb
?
我想我可能需要一个ajax请求并尝试以下但它不起作用:
$.ajax({
type: "post",
url: "/books_controller",
data: { list_authors: this.get('authors') },
});
具体来说,我不确定网址需要是什么。非常感谢您的帮助。谢谢。
您可以使用JSON.stringify
,并从Controller JSON.parse(params)
解析它。
$.ajax({
type: "post",
url: "/books_controller",
data: { list_authors: JSON.stringify(this.get('authors')) }
});
type: 'POST',
url: `/books/${this.id}`, // or '/books/' + this.id,
data: {
_method: 'put'
}
这将把你带到BooksController#update
。您还需要将_method
条目合并到数据对象中。
“注意:因为在浏览器中不广泛支持使用除GET和POST之外的HTTP方法提交表单,所以所有其他HTTP方法实际上都通过POST发送,并使用_method参数中指示的预期方法.Rails会自动检测并补偿这一点。” - Working with JavaScript in Rails