Ruby  »  Guide  »  Guida Ruby On Rails 

I template Rxml - II



I messaggi vengono recuperati dal database tramite il metodo latest della classe Message, che non è stato ancora creato e che scriveremo adesso. La ragione per cui è giusto aggiungere un metodo alla classe Message piuttosto che scrivere il codice nel controller, o nella vista o in un helper, è che l'operazione di ricerca degli ultimi messaggi è strettamente collegata al modello.

Concettualmente è il modello che sa come andare a pescare i dati e non la vista o il controller.

Modifichiamo quindi il modello in app/models/message.rb in questo modo:

class Message < ActiveRecord::Base
  belongs_to :author
  belongs_to :topic
  def self.latest
   find :all,
        :order=>"created_at DESC",
        :limit=> 10
  end
end

Il metodo latest è definito con un self davanti. I metodi definiti in questo modo sono metodi di classe, come find o new che abbiamo già visto. Possiamo vedere anche alcune altre possibilità nell'uso di find, ovvero la scelta di inserire informazioni aggiuntive nella query di ricerca, usando come sempre degli argomenti opzionali passati per nome. In particolare, gli argomenti order e limit riflettono esattamente i meccanismi SQL sottostanti  ed esprimono funzionalità piuttosto semplici per selezionare un numero preciso di risultati ordinati in base ad una precisa clausola (in questo caso selezionando gli ultimi in ordine di creazione). 

Disabilitare il layout

Se però ora provate a visualizzare questo file, vi troverete di fronte ad un problema: intorno al nostro XML troviamo di nuovo il layout dell'applicazione, il che lo rende codice non valido. Fortunatamente come abbiamo già detto parlando dei layout, è possibile effettuare un'impostazione più precisa agendo a livello di singolo controller o di singola azione. In particolare, è possibile impostare un layout specificamente per un controller usando il metodo di classe layout:

class MyController < ApplicationController
 layout "mylayout"
end

Anche questo metodo offre diverse possibilità, come il poter usare argomenti opzionali :except ed :only (con comportamento identico a quanto già visto per before_filter). Poiché stiamo parlando di template rxml, è giusto anche far notare come sia possibile scrivere dei layout in rxml, anche se è una pratica decisamente inusuale. 

Per far sì che il nostro controller non usi nessun layout per nessuna delle sue viste (in quanto progettiamo di usare solo azioni che forniscano file xml per aggregatori di feed, e non html per i browser), è sufficiente aggiungere una linea come questa a feed_controller.rb :

layout nil

Ultimi articoli Ruby

Duck Typing, tipizzazione per comportamenti

Riconoscere un oggetto non dal tipo ma dai metodi che espone, quindi...

Introduzione a Rack

Implemetare uno stack di middleware per gestire efficacemente...

Le meravigliose novità di Rails 3

La fusione con Merb, l'ottimizzazione del framework, l'introduzione...

CouchDB e Rails: la gemma sul divano

Facciamo la conoscenza di CouchRest, una alternativa ad ActiveRecord...

JRuby: Java e Ruby insieme

Introduzione pratica alla piattaforma JRuby, per utilizzare classi...

Altri articoli

Guide Ruby

Guida ActiveSupport

Una panoramica sulle funzionalità più importanti di ActiveSupport:...

Guida Ruby On Rails 2

Scoprire le novità di Ruby on Rails 2, memorizzare i dati con...

Guida Ruby e il Web

Un percorso alla scoperta delle potenzialità offerte da Ruby nella...

Altre guide

Newsletter @Ruby

Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto