1

has_and_belongs_to_many :songs という Playlists というモデルがあります

私の 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 に答える