ben ******* wrote:
> Bonjour,
> 
>   Je me trouve dans une impasse. J'obtiens le message d'erreur suivant
> quand je souhaite afficher la page d'accueil de mes modules
> (monserveur/modules) :
> 
> undefined method `all' for Module:Class
> 
> J'ai utilisé le scaffold pour générer mon contrôleur module... Pour mes
> autres contrôleurs, tout se passe très bien! Le code est identique.
> 
> mon modèle contient :
> 
> class Module < ActiveRecord::Base
> end
> 
> mon contrôleur :
> 
> class ModulesController < ApplicationController
>   # GET /modules
>   # GET /modules.xml
>   def index
>     @modules = Module.all
> 
>     respond_to do |format|
>       format.html # index.html.erb
>       format.xml  { render :xml => @modules }
>     end
>   end
> 
>   # GET /modules/1
>   # GET /modules/1.xml
>   def show
>     @module = Module.find(params[:id])
> 
>     respond_to do |format|
>       format.html # show.html.erb
>       format.xml  { render :xml => @module }
>     end
>   end
> 
>   # GET /modules/new
>   # GET /modules/new.xml
>   def new
>     @module = Module.new
> 
>     respond_to do |format|
>       format.html # new.html.erb
>       format.xml  { render :xml => @module }
>     end
>   end
> 
>   # GET /modules/1/edit
>   def edit
>     @module = Module.find(params[:id])
>   end
> 
>   # POST /modules
>   # POST /modules.xml
>   def create
>     @module = Module.new(params[:module])
> 
>     respond_to do |format|
>       if @module.save
>         flash[:notice] = 'Module was successfully created.'
>         format.html { redirect_to(@module) }
>         format.xml  { render :xml => @module, :status => :created,
> :location => @module }
>       else
>         format.html { render :action => "new" }
>         format.xml  { render :xml => @module.errors, :status =>
> :unprocessable_entity }
>       end
>     end
>   end
> 
>   # PUT /modules/1
>   # PUT /modules/1.xml
>   def update
>     @module = Module.find(params[:id])
> 
>     respond_to do |format|
>       if @module.update_attributes(params[:module])
>         flash[:notice] = 'Module was successfully updated.'
>         format.html { redirect_to(@module) }
>         format.xml  { head :ok }
>       else
>         format.html { render :action => "edit" }
>         format.xml  { render :xml => @module.errors, :status =>
> :unprocessable_entity }
>       end
>     end
>   end
> 
>   # DELETE /modules/1
>   # DELETE /modules/1.xml
>   def destroy
>     @module = Module.find(params[:id])
>     @module.destroy
> 
>     respond_to do |format|
>       format.html { redirect_to(modules_url) }
>       format.xml  { head :ok }
>     end
>   end
> end
> 
> Lors de la génération manuelle du scaffold, j'ai bien utilisé un nom au
> singulier 'module'
> 
> Concernant les liaisons avec les autres tables dans le fichier routes,
> j'ai :
> 
> 
>   map.resources :modules, :belongs_to => :autres
> 
> 
>   map.resources :autres, :has_many => :modules
> 
> 
> je ne comprends pas pourquoi j'obtiens ce message d'erreur et seulement
> sur au niveau ce contrôleur ? Surement une erreur d'inattention mais
> laquelle. y a t-il quelque d'incorrect dans tout ce code ?
Salut !

Ben to fameux 'all' pourrait bien dépendre de ta version de RoR, pour 
Rails 3 et +, pas de blem cette interface est prédéfinie je crois (info 
here 
http://railscasts.com/episodes/202-active-record-queries-in-rails-3), 
pour rails 2.x, tu devrais créer un "named scope" (désolé, j sai po trop 
traduire)comme suit:

class Module
 named_scope :all, :conditions => {}

 .
 .
 .
end

...ou bien utiliser le classique query interface "find(:all)", après 
tout l'interpreteur t'a dit qu'il ne connaît pas cette methode, donc tu 
la créé to named scope, éléméntaire mon cher Watson :)

plus d'info ici 
http://stackoverflow.com/questions/2607697/ruby-on-rails-named-scope-implementation

Concernant les mots clés, ben essaie de ne pas en user :-), personnalise 
to code
ex: class Module => class MyProjectNameModule (préfixe tes noms de 
modèle par un nom de projet e.g., après tout, c'est transparent pour les 
end-users)

Les "has_many" et "belongs-to" dans les routes, ne pas surtout confondre 
avec le has_many des associations au niveau des modèles, ça s'appèlle un 
"nested route" qui imbrique les sub-ressources associés à une ressource 
(relation d'association définie au niveau des modèles par les 
macros..."has_many" et "belongs_to" !) l'URL de cette ressource, donc 
c'est pas du tout là le blem, tout est clean dans cette direction

ben je crois que ça aurra aidé bon nombre, merci
-- 
Posted via http://www.ruby-forum.com/.

-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]

Subscription settings: 
http://groups.google.com/group/railsfrance/subscribe?hl=fr

Répondre à