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