使用Ajax获取最新对象

时间:2016-04-12 07:26:02

标签: jquery ruby-on-rails ajax

如何使用ajax在Ruby上获取最新的make对象?

说我有两个名为书籍和章节的模型。当我创建一个新章节时,我想更新我的章节列表。

我目前的ajax看起来像这样:

$.ajax({
    type: "GET",
    url: '/books/:books_id/chapters',
    success: function(data) {
        $("body").append(data);
    }
});

但这会归还所有章节的所有书籍。 如何将其过滤为“最新书籍最新章节”?

2 个答案:

答案 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