Kristof Dreier — where tech meets text

Willkommen im privaten Blog von Kristof Dreier, Webentwickler und Mac-Enthusiast aus Münster. Thematisch dreht es sich hier um Webdevelopment mit dem Zend Framework, kleinere Einschübe über Cocoa und vielleicht auch mal ein Blick in die Weiten von Ruby on Rails.

Rails-Plugin: acts_as_browsable

Donnerstag, 28. Mai 2009 in

Zur Zeit bin ich mit Martin dabei ein etwas größeres Web-Projekt in Rails umzusetzen. Primär geht es darum, mir endlich Rails anzueigenen, denn Martin hat ja mit Social Reader bewiesen, dass er es zumindest schon kann. Im Zuge der Entwicklung haben wir uns dann auch mal an einem eigenen Rails-Plugin versucht.

Darf ich vorstellen: acts_as_browsable

Das Ziel war eine einfache und wiederverwendbare Möglichkeit zu programmieren, mit der es möglich ist auf den nächsten, bzw. vorherigen Eintrag eines Models zuzugreifen. Anstatt eine next- und previous-Methode in das Model zu integrieren, haben wir uns entschlossen daraus ein Plugin zu machen. Leichter gesagt als getan, wenn man zuvor noch nie ein Plugin entwickelt hat, aber jeder Anfang ist eben schwer.
Nach zwei Tagen sind wir zumindest soweit, dass man eine kleine Vorabversion präsentieren kann. Zu finden ist das Plugin natürlich auf Github: acts_as_browsable

Kleines Anwendungsbeispiel

  1. class Post < ActiveRecord::Base
  2.     acts_as_browsable
  3. end

Durch acts_as_browsable bekommt unser Post-Model folgende Methoden injiziert:

  1. @post.next                            # Gibt  den nächsten Post zurück
  2. @post.prev                            # Gibt den vorherigen Post zurück
  3. @post.next_by(:title)              # Gibt den nächsten Post, sortiert nach Titel, zurück
  4. @post.prev_by(:title)              # Gibt den vorherigen Post, sortiert nach Titel, zurück

Die next- und prev-Methoden suchen jeweils anhand der id die nächsten bzw. vorherigen Eintrag. next_by und prev_by erwarten als Argument jeweils den Namen einer Tabellenspalte, als Symbol.

Gleichzeitig bringt das Plugin noch einen View-Helper mit: browsable.
Im View wird einfach folgender Code aufgerufen und man erhält automatisch Links zum Durchblättern der Einträge.

  1. <%= browsable @entry %>

Der Aufruf erzeugt folgenden HTML-Code

  1. <ul class="browsable">
  2.    <li class="browsable_previous">Previous</li>
  3.    <li class="browsable_next">Next</li>
  4. </ul>

Natürlich werden die Links nur angezeigt, wenn Einträge gefunden worden sind. Alles weitere könnt ihr euch aber auch direkt auf Github angucken und Fragen/Bugs/Anregungn gerne auch in die Kommentare.

Abschließen bleibt mir noch zu sagen, dass wir uns über Feedback unglaublich freuen würden, gerade auch unter dem Gesichtspunkt, dass es eben unser erstes Plugin ist und man eventuell die ein oder andere Kleinigkeit schöner lösen kann.

Kommentare

    tom
    Jun 9, 23:44

    Kristof, nur als Ergänzung: Mit dem Plugin http://www.opensourcerails.com/projects/135-Rails-DataBrowser kannst du ebenfalls ganz bequem ebenfalls deine Models durchbrowsen. Ich habe es bis jetzt noch nicht benutzt, werds mir aber demnächst mal anschauen. Vielleicht kannst du es ja irgendwie verwerten… In Django gibt es DataBrowse übrigens ebenfalls.

    Kristof Dreier
    Jun 10, 13:33

    Hey tom, danke fuer den Hinweis, aber wenn ich das richtig verstehe stellt der DataBrowser eine andere Funktion bereit. Mit dem DataBrowser kann ich ja scheinbar die Daten in meinem Model bearbeiten oder neu hinzufuegen.
    Das Plugin von Martin und mir ermoeglich einem das Durchblaettern von Daten in einem Model. Wenn ich also z.B. auf einem einzelnen News-Eintrag bin, kann ich dort zum naechsten oder vorherigen Eintrag springen. Quasi eine Blaetterfunktion, die mir aber eben nur den naechsten oder vorherigen Beitrag zurueckgibt.

    Ich hoffe das war verstaendlich :)

    Martin Labuschin
    Aug 12, 14:15

    Fällt mir gerade auf: Im erzeugten HTML-Quelltext in deinem Artikel fehlen die Anker/Links :)

Dein Kommentar


Textile-Hilfe