[ruby-it] Nell'helper o nel modello?

Luca Mearelli luca.mearelli a gmail.com
Gio 8 Ott 2009 10:55:25 CEST


2009/10/8 Paolo Montrasio <paolo a paolomontrasio.com>:
> C'è un modello Model con un campo status. Nelle view in base allo status
> si mostrerà un'icona (es: rossa per status disabilitato, verde per
> status abilitato, etc).
>
> Posso creare un helper status_for_mymodel a cui passo l'oggetto Model e
> che ritorna l'image_tag appropriata. Oppure posso creare un metodo
> icon_tag in Model e fargli ritornare l'immagine. Nella view poi scriverò
> @oggetto.icon_tag
>

la tecnica che uso e' una variazione sulla seconda strada che indichi,
in pratica separo le definizione di quale 'icona' usare dall'output
del tag image (o dell'url se e' per quello), facendolo in maniera
uniforme sui diversi modelli (i.e. usando lo stesso metodo)

e.g.

class ModelA
  def icon_name
     case status
      ....
  end
end


class ModelB
  def icon_name
     case this_other_status
      ....
  end
end

e poi l'helper diventa lo stesso per tutti i modelli:

def icon_for(model, options)
  image_tag(model.icon_name, options)
end

quindi nella pagina avrai

<%= icon_for model, options %>

insomma il metodo icon_name dei modelli mappa l'istanza del modello
nello 'spazio' delle possibili icone ( non e' detto poi che l'output
debba essere direttamente il nome dell'icona sul file system, potrebbe
essere 'un puntatore' all'icona giusta, i.e. ci potrebbe essere di
mezzo un'altra indirezione )

che ne dici?
ciao
Luca


More information about the Ml mailing list