Kontrolery - ActionController
Logika aplikacji zawarta jest w kontrolerach - klasach dziedziczących po ActionController. wszystek rewident definiuje wyznaczony zestaw akcji(w Rails są to publiczne metody klas kontrolerów), jaki definiuje jego funkcjonalność. jeden rewident zwyczajowo skupia się na wykonaniu zadań spośród konkretnej dziedziny działania aplikacji. Oto jak mógłby wyglądać przykładowy rewident do zarządzania kontami uzytkowników:
class UserController < ApplicationController def index redirect_to :action => :greet # przykład przekierowanie do innej akcji enddef greet @user = User.find(session[:user_id]) # dostęp do danych zapisanych w sesji # ta linia papier drogocenny nie wymaga więcej od momentu kontrolera, # zmienna @user zostanie udostępniona widokowi, # jaki wygeneruje powitanie dla uzytkownika (np. witając po imieniu) end
def destroy @user = User.find(params[:id]) # parametr nadesłany metodą GET lub POST (bez znaczenia w tym przypadku) @user.destroy flash[:message] = "Użytkownik usunięty" # pamięć podręczna dostępna później w widoku dowolnej akcji @redirect_to :home_url # adres określony w pliku routes.rb, zmiana adresu stony domowej nie wpłynie na działanie kontrolera end
protected # poniższe metody nie są publiczne, więc nie są akcjami
def check_user # dowolne działania, spośród których korzysta więcej aniżeli jedna papier drogocenny # powinny zostać wydzielone do osobnej metody wedle regułą DRY end end
Metoda index w tym przypadku przekierowuje roszczenie do innej akcji, sposób greet pobiera dane spośród modelu podobnie przekazuje je później (bez większej obróbki) do widoku. sposób destroy dokonuje zmian w danych pobranych spośród modelu po czym oddaje nawigacja metodzie greet.
Po otrzymaniu od momentu klienta żądania podobnie przyporządkowaniu go do konkretnego kontrolera, serwer rails tworzy instancję klasy danego kontrolera podobnie wywołuje metodę odpowiadającą danej akcji (domyślnie metodę index)