Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1167 connectés 

  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Éviter la dupplication de code

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Éviter la dupplication de code

n°1611309
esox_ch
Posté le 13-09-2007 à 11:56:40  profilanswer
 

Bonjour,
J'essaie de créer une zone d'administration du même gout que celle proposée par le plugin auto-admin (http://code.trebex.net/auto-admin/, ce dernier me plaisant peu de part la phrase de son créateur : This is not a view generator for you to then customise. Either it provides the interface you want, or it doesn't.)
J'aimerais, tout comme dans ce plugin, pouvoir gérer les entrées dans ma base de données d'une manière à peu près identique quelque soit le modèle.
En ce moment j'y arrive en passant par plusieurs contrôleurs (un par modèle en fait) mais j'aimerais pouvoir les rassembler en un seul contrôleur d'administration. Les méthodes utilisées par mes contrôleurs se ressemblent beaucoup, j'ai donc créé une hiérarchie de modules que je load. J'aurais aimé faire quelque chose style :
 

Code :
  1. class AdministrationController < ApplicationController
  2.   case params[:module]
  3.   when "user"
  4.     include UserController
  5.   when "role"
  6.     include RoleController
  7.   end


 
Et ainsi de suite, malheureusement je constate que params n'est pas excessible dans le corps de la classe.
Comment puis-je faire?
 
Merci


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 13-09-2007 à 11:56:40  profilanswer
 

n°1611742
esox_ch
Posté le 14-09-2007 à 17:49:49  profilanswer
 

personne?

n°1611833
LePhasme
Les Belges domineront le monde
Posté le 14-09-2007 à 22:26:36  profilanswer
 

J'avoue que j'ai un peu de mal à comprendre ce que tu veux faire donc je risque de répondre à coté de la plaque.
 
Pourquoi tu fais pas simplement ton AdministrationController qui hérite de ApplicationController, et ensuite tu fais hériter chaque controlleur de ton interface admin de AdministrationController et tu inclus ton module dedans.

n°1611881
esox_ch
Posté le 15-09-2007 à 12:30:46  profilanswer
 

Bonjour,

 

J'ai trouvé comment faire mon bonheur ... Je suis pas sur d'avoir exactement compris ce que tu me proposes Le Phasme, mais est-ce que le résultat serait le même? Parce que là ça a beau marcher comme je le veux, ça me parait quand même être de la grosse bidouillle ... Donc si on me propose mieux je prend :D

 
Code :
  1. require 'shared/user_controller'
  2. require 'shared/role_controller'
  3. # Add here other controllers
  4. class AdministrationController < ApplicationController
  5.   before_filter :login_required
  6.   access_control :DEFAULT=>'admin'
  7.  
  8.   # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  9.   verify :method => :post, :only => [ :destroy, :create, :update ],
  10.   :redirect_to => { :action => :list }
  11.  
  12.  
  13.   def loadRightController
  14.    case params[:module]
  15.     when 'user'
  16.       self.extend UserController
  17.     when 'role'
  18.       self.extend AbonnementController
  19.     else
  20.       redirect_to :action=>:index
  21.       return
  22.     end
  23.     eval("self."<<params[:todo])
  24.   end
  25. end
 

Et ensuite j'ai rajouté une route :

 
Code :
  1. map.connect 'administration/:module/:todo/:id', :controller => 'administration',
  2.   :action => 'loadRightController',
  3.   :defaults => {
  4.     :todo=>'index'
  5.   }
 

Edit: Bien entendu là c'est pas une solution "finie", genre il faut que je securise les différents params parce que là c'est assez une invitation à se faire démolire


Message édité par esox_ch le 15-09-2007 à 12:32:18

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Éviter la dupplication de code

 

Sujets relatifs
Logiciel de référence croisée pour du code C[Turbo Pascal 7] Optimisation trunc() et écriture dans le code
[IE] Récupérer le code source d'une page dynamique en liveRecherche code Borland sous xp carte parallele/i2c
Code facon SpoilerCode en vb dans Excel -> comment faire un .exe
Afficher du code en couleur dans une page HTMLFckEditor : Nettoyer le code
Le code PHP ne s'affiche plus (tags PHP reconnus comme tags HTML)Débutant: conversion idée->code
Plus de sujets relatifs à : Éviter la dupplication de code


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR