Wohl mit keinem anderen Webdevelopment-Framework ist es leichter kleine & nette Ajax-Effekte zu erstellen wie mit Ruby on Rails – ganz einfach deshalb weil sie in Ruby on Rails schon integriert sind.
Wie einfach man z.B. ein Autocomplete für Textfelder bastelt (dass sich die Daten aus einer Datenbank zieht) will ich nachfolgend aufzeigen.
Zuerst erstellt man eine Tabelle in einer Datenbank und achtet dabei auf die Namenskonventionen bei Rails – d.h. Feldnamen und Tabellennamen grundsätzlich in Kleinbuchstaben und Tabellennamen im Plural.
create table movies (
id int not null auto_increment,
name varchar(100) not null,
primary key(id)
);
Die Tabelle kann nun mit Beispiel-Filmen befüllt werden – wer zu faul ist welche einzugeben kann einfach die SQL-INSERTs von folgender txt-Datei nehmen (enthält die laut Internet Movie Database 250 besten Filme aller Zeiten): movies.txt
Nun erstellt man wie gewohnt das Model für die Tabelle:
ruby script/generate model movie
Und dann den Controller:
ruby script/generate controller movie
In den Controller muss nun noch die Methode für Autocomplete eingefügt werden, welche als Parameter auf die Tabelle (movie) bzw. dessen entsprechendes Feld (name) verweist.
class MovieController < ApplicationController
auto_complete_for :movie, :name
end
Nun ist die Anwendung schon fast fertig - was noch fehlt ist die View. Dafür wird nun eine index.rhtml in Verzeichnis app/views/movie/ erstellt.
<html>
<head>
<title>Autocomplete mit Ruby on Rails</title>
<%= javascript_include_tag :defaults %>
</head>
<body>
<h4>Autocomplete mit Ruby on Rails</h4>
Movie: <%= text_field_with_auto_complete :movie, :name %>
</body>
</html>
Kurz zur Erläuterung:
- Die Methode
javascript_include_tag bindet die Javascript-Libaries der Ajax-Frameworks script.aculo.us und Prototype ein, nämlich prototype.js, effects.js, dragdrop.js, controls.js und application.js.
- Die Methode
text_field_with_auto_complete - der als Parameter wieder movie und name übergeben werden - erstellt das Textfeld für das Autocomplete und den Javascript-Code zum Aufruf der entsprechenden Klassen des script.aculo.us-Frameworks.
So... fertig! Jetzt kann man die Anwendung aufrufen und sich an einem einfachen Autocomplete erfreuen. ;-)
Die fertige "Anwendung" kann hier betrachtet werden - oder unter meiner Rails-Subdomain rails.altes-kind.de.
Viel Spaß! :-)