Nome controller sempre plurale?


#1

Ciao! Come da titolo mi chiedo se per controller non direttamente legati
ad activerecord è sempre meglio utilizzare la forma plurale oppure se in
alcuni casi va bene anche il singolare.

Per es. devo utilizzare per forza sessions_controller, oppure in questo
caso va anche bene utilizzare session_controller? A me suona meglio
session/login piuttosto che sessions/login …

Grazie


#2

Marco C. wrote:

Ciao! Come da titolo mi chiedo se per controller non direttamente legati
ad activerecord è sempre meglio utilizzare la forma plurale oppure se in
alcuni casi va bene anche il singolare.

Per es. devo utilizzare per forza sessions_controller, oppure in questo
caso va anche bene utilizzare session_controller? A me suona meglio
session/login piuttosto che sessions/login …

Grazie

Puoi creare le url che preferisci andando ad editare il file
config/routes.rb

Ad esempio se pensi che /login suoni anche meglio di session/login puoi
inserire linee come

map.connect ‘login’, :controller => ‘sessions’, :action => ‘login’
map.connect ‘logout’, :controller => ‘sessions’, :action => ‘logout’

prima di quella che definisce il routing di default.
Oppure puoi definire delle named routes:

map.login ‘/login’, :controller => ‘sessions’, :action => ‘login’
map.logout ‘/logout’, :controller => ‘sessions’, :action => ‘logout’

che ti creano helper tipo login_url e logout_url e se non erro altri
ancora.

Ti consiglio però di approfondire l’argomento leggendo la documentazione
di Rails sul routing, anche perché per la sintassi mi sono basato sui
file di alcune mie applicazioni ma non ho testato quel che ti ho scritto
.-)

Paolo


#3

Ciao :smiley:

Sui nomi dei controller c’è un discorso di convenzione piuttosto che di
regole, diciamo
che esistono due grosse categorie di controllers

  • Quelli che mappano risorse, sono i controller ai quali di solito si
    associa un map.resources o
    map.resource e che rispondono a chiamate effettuate con il paradigma
    RESTful, a questi controller,
    che nella norma incidono su di un solo model si tende a dare la
    seguente
    nomenclatura:
    • ‘nome_del_model_singolare’_controller.rb se nel file routes.rb
      c’è
      un map.resource (cioè se
      il controller incide su una singola istanza del modello);

    • ‘nome_del_model_plurale’_controller.rb se nel file routes c’è un
      map.resources (cioè se il
      controller incide su di una collezione di istanze di un modello);

    • I controller generici, sono controller che non sono troppo
      aderenti
      al concetto di risorsa,
      (ad esempio un controller che gestisce tutte le form di contatto di
      un
      sito), in questo caso
      il nome che decidi di dare è assolutamente arbitrario :slight_smile: (a questi
      controller corrisponde il map.connect nel file routes)

Se vuoi approfondire il concetto di Risorsa e di paradigma REST io ho
trovato questo tutorial
abbastanza interessante :slight_smile:
http://www.sitepoint.com/blogs/2008/02/04/restful-rails-part-i/

Sandro


#4

On Thu, Jan 1, 2009 at 9:47 PM, Fabrizio R.
removed_email_address@domain.invalidwrote:

Per farla RESTful (è necessario pensare a risorse): “sessions/new”,
che per comodità puoi aliasare in “/login” o come altro vuoi.

I nomi dei file dei controller vanno sempre al plurale.
Se la risorsa è singleton, allora la url viene generata al singolare
automaticamente (impostando map.resource :session, ad esempio [notare
l’uso del singolare
]).

Vero, mi ero sbagliatissimo :smiley: grazie per la correzione :smiley:


#5

Per farla RESTful (è necessario pensare a risorse): “sessions/new”,
che per comodità puoi aliasare in “/login” o come altro vuoi.

I nomi dei file dei controller vanno sempre al plurale.
Se la risorsa è singleton, allora la url viene generata al singolare
automaticamente (impostando map.resource :session, ad esempio [notare
l’uso del singolare
]).

Saluti,

Il giorno 01/gen/09, alle ore 18:22, Marco C. ha scritto:


#6

Fabrizio R. wrote:

Per farla RESTful (� necessario pensare a risorse): “sessions/new”,
che per comodit� puoi aliasare in “/login” o come altro vuoi.

I nomi dei file dei controller vanno sempre al plurale.
Se la risorsa � singleton, allora la url viene generata al singolare
automaticamente (impostando map.resource :session, ad esempio [notare
l’uso del singolare
]).

Grazie a tutti per i chiarimenti!