Rails:与to_json / to_xml的paginate关联

时间:2012-12-12 17:09:19

标签: ruby-on-rails xml json activerecord pagination

我有一个名为播放列表的模型,其中has_and_belongs_to_many:songs

在我的PlaylistController中,我调用了respond_with(@playlist,:include =>:songs),这样我就可以返回json和xml输出。

然而,一些播放列表有数百首歌曲。所以我想让调用者通过调用发送?limit = X& offset = Y(默认值分别为25和0)。但是我如何在序列化期间将此限制和偏移传递给关联?我试过了

@ playlist.songs = @ playlist.songs.limit(l).offset(o)

但这有一些不幸的结果。 :(

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这似乎是分页库的任务。我们正在使用will_paginate。我们的电话如下:

collection.paginate page => 2, :per_page => 10

答案 1 :(得分:0)

这是我做的:

我添加了使用集合对模型进行分页并检索分页集合的方法:

# models/playlist.rb
def paginate_songs(limit, offset)
    @paginated_songs = Array.new
    songs.limit(limit).offset(offset).each do |song|
        @paginated_songs << song
    end
end

def paginated_songs
    return @paginated_songs
end   

我向控制器添加了一些逻辑,它将对对象进行分页并在响应中包含分页集合:

# controllers/playlists_controller.rb
@playlist.paginate_songs(l, o)
respond_with(@playlist, :methods => [ :paginated_songs ])