如何使用ajax在Ruby上获取最新的make对象?
说我有两个名为书籍和章节的模型。当我创建一个新章节时,我想更新我的章节列表。
我目前的ajax看起来像这样:
$.ajax({
type: "GET",
url: '/books/:books_id/chapters',
success: function(data) {
$("body").append(data);
}
});
但这会归还所有章节的所有书籍。 如何将其过滤为“最新书籍最新章节”?
答案 0 :(得分:0)
Ajax不是问题。这个网址
'/books/:books_id/chapters'
将由您的routes.rb文件解释,该文件将选择一个控制器和操作来处理请求。
编辑:您需要在其中插入实际ID。目前你只是发送一个字符串“:books_id”,这对你没有帮助。你的javascript应该是这样的:
//get the book id from somewhere, eg the event which
//triggered this ajax call. I've just hard-coded a value in here.
var bookId = 123;
$.ajax({
type: "GET",
url: "/books/"+bookId+"/chapters",
success: function(data) {
$("body").append(data);
}
});
此操作将“执行一些操作”,然后(希望)将一些文本发送回ajax操作(例如与记录或一组记录关联的html)。
因此,您需要查看处理请求的操作。这实际上是你想要达到的目标的正确行动吗?如果这是正确的行动,那它做得对吗?
修改强>:
如果您遵循惯例,该网址通常会返回与ID为bookId
的图书相关联的所有章节。您可以编写一个像“newest”这样的新操作来返回最新的记录,或者通过参数发送,然后在获取该参数等时更改操作的行为。
答案 1 :(得分:0)
设置一个到控制器中方法的路径,该方法返回最近的对象,然后在ajax调用中使用该对象。
ajax - 请务必将book_id传递给网址。
$.ajax({
type: "GET",
url: '/books/' + book_id' + '/last_chapter',
success: function(data) {
$("body").append(data);
}
});
控制器
def last_chapter
Chapter.order(created_at: :desc).limit(1)
end
路由
resources :books do
member do
get '/last_chapter/', to: 'chapters#last_chapter', as: 'last_chapter'
end
end