ruby-mine

exploring the mine

Schöne URLs für Pagination

von murphy am 17.03.2006 (14 Uhr)

Rails bietet durch das Routing-System faszinierende Möglichkeiten an, um hässliche ?-URLs wie phpBB2/viewtopic.php?t=186683&postdays=0&postorder=asc&start=30... zu vermeiden.

Eine zweite sehr schöne Einrichtung ist die Pagination:

def list per_page = 20
  @member_pages, @members = paginate :members,
    :per_page => per_page, :order => 'last_name, first_name'
end

Gerade eben kam mir die Idee, wie man die beiden ganz einfach kombinieren kann. Angenommen, wir haben einen Controller Besetzung, der die Musiker in einem Orchester anzeigt. Als index-Aktion wird eine Liste via Pagination angezeigt. Die URLs sehen so aus:

/besetzung?page=2

Nun fügt man oberhalb der Standardroute folgenden Wege ein:

map.connect ':controller/:page', :controller => 'besetzung',
  :page => /\\A\\d+\\z/

/\A\d+\z/ sorgt dafür, dass die Route auch wirklich nur dann anspringt, wenn eine Zahl angegeben wurde (siehe dazu auch Rails und Sicherheit im Web).
Jedenfalls sehen die URLs jetzt so aus:

/besetzung/2


Kommentar schreiben

Name (notwendig)

Mail (wird nicht veröffentlicht)

Webseite