Class: FurnituresController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- FurnituresController
- Defined in:
- app/controllers/furnitures_controller.rb
Overview
Contrôleur de gestion du mobilier urbain, Furniture.
Ce contrôleur permet de :
-
lister le mobilier existant, sans permettre de le modifier pour l’instant.
-
enregistrer un nouveau mobilier.
Suite à l’enregistrement d’un nouveau mobilier, ses panneaux (Panel) s’enregistreront.
Instance Method Summary collapse
-
#destroy ⇒ Object
Suppression d’un mobilier.
-
#destroydead ⇒ Object
Détruit tous les mobiliers qui n’ont plus de panneaux associés.
-
#index ⇒ Object
Renvoie vers l’action ‘list’.
-
#list ⇒ Object
Liste des panneaux.
-
#register ⇒ Object
Enregistrement d’un nouveau mobilier.
-
#show ⇒ Object
Détail d’un panneau.
Instance Method Details
#destroy ⇒ Object
Suppression d’un mobilier. Le mobilier disparaît de la base si ses panneaux ont été supprimés car non updatés depuis 5 fois le delay (furniture vide)
63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/controllers/furnitures_controller.rb', line 63 def destroy #Panel.find(:first,:conditions => [ "furniture_id = ?", "1"]) furniture = Furniture.find(params[:id]) if panel=Panel.find(:first,:conditions => [ "furniture_id = ?", params[:id]]) == nil render :text => "Furniture removed from database" furniture.destroy else redirect_to(:action => :list) end end |
#destroydead ⇒ Object
Détruit tous les mobiliers qui n’ont plus de panneaux associés
76 77 78 79 80 81 82 83 84 85 |
# File 'app/controllers/furnitures_controller.rb', line 76 def destroydead for furniture in Furniture.find_all for column in Furniture.content_columns if Panel.find(:first,:conditions => [ "furniture_id = ?", params[:id]]) == nil furniture.destroy end end end redirect_to :action => 'list' end |
#index ⇒ Object
Renvoie vers l’action ‘list’
16 17 18 19 |
# File 'app/controllers/furnitures_controller.rb', line 16 def index list render :action => 'list' end |
#list ⇒ Object
Liste des panneaux.
26 27 28 |
# File 'app/controllers/furnitures_controller.rb', line 26 def list @furniture_pages, @furnitures = paginate :furnitures, :per_page => 10 end |
#register ⇒ Object
Enregistrement d’un nouveau mobilier
Input
-
Environnement Second Life transmis en HTTP
-
permanent_id=permanent_id
: identifiant permanent du mobilier, s’il existe déjà
permanent_id
est optionnel, si le mobilier n’en remplace pas un qui existait déjà.
Output
-
Le délai de mise à jour et l’identifiant permanent, sous la forme :
delay=delay
permanent_id=permanent_id
48 49 50 51 52 53 54 55 56 57 58 |
# File 'app/controllers/furnitures_controller.rb', line 48 def register # Création ou mise à jour du mobilier. # Attention à l'astuce "slattrs.delete(:key)". Grâce à celle-ci, l'appel à # 'update_attributes' ne reçoit que les 3 paramètres à mettre à jour, moins "key". furniture = Furniture.find_or_initialize_by_furniture_key(@slattrs.delete(:key)) furniture.update_attributes!(@slattrs.merge({ :permanent_id => params[:permanent_id]})) render :text => "delay=#{furniture.delay}\npermanent_id=#{furniture.permanent_id}\n", :layout => false, :content_type => "text/plain" end |
#show ⇒ Object
Détail d’un panneau.
31 32 33 |
# File 'app/controllers/furnitures_controller.rb', line 31 def show @furniture = Furniture.find(params[:id]) end |