1

我有一个名为 Playlists 的模型,它 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)

但这带来了一些不幸的结果。:(

有任何想法吗?

4

2 回答 2

0

这似乎是分页库的任务。我们正在使用 will_paginate。然后我们的调用如下所示:

collection.paginate page => 2, :per_page => 10
于 2012-12-12T17:41:49.907 回答
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 ])
于 2013-02-09T11:07:45.917 回答