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 ?