C'est juste parfait... J'ai donc écris le code ci dessous.
*Model :*
je crée un model générique :
class ExoAlea
include Mongoid::Document
include Mongoid::Timestamps
field :title, type: String
field :text, type: String
field :help, type: String
field :time, type: Integer
field :reponseStudent, type: Integer
field :a, type: Integer
field :b, type: Integer
field :c, type: Integer
field :d, type: Integer
validates :title, presence: true
validates :text, presence: true
validates :time, presence: true
validates :help, presence: true
validates :reponseStudent, presence: true, on: :validation
validate :valid_answer, on: :update
def valid_answer
errors.add(:anwser, "Réponse fausse") unless result_valid?
end
def result_valid?
# une validation par défaut
end
def enunciated
# un enoncé par défaut
end
end
puis un model par exercice spécifique :
class ExoDiscriminant < ExoAlea
def result_valid?
# Validation spécifique
end
def enunciated
# Énoncé spéfique
end
end
*Views*
Dans ma vue show , j'utilise la méthode @exoAlea.enunciated et j'enlève le
helper.
J'aurai donc une seule vue pour tous mes 1000 exercices. C'est top !
*Question 1 : Ma vue show.html.erb doit être dans le dossier app/exoAlea ?
ou dans le dossier app/Exo_discriminant ? ou dans layout ?*
*Controller *
Comment se nomme ce controller ? exo_alea_controller ou
exo_discriminant_controller ?
Dans le contrôleur, te me dis "tu n'a juste a changer la classe instanciée".
Si je comprends bien c'est le controller qui se nomme exo_alea_controller.
Dans ce controller, comment je change la classe instanciée ? je peux la
nommée @exoAlea.enunciated ?
*Question 2 : Est ce que le controller resemble donc à ça ?*
class ExoAleaController < ApplicationController
before_action :set_exo_alea, only: [:show, :edit, :update, :destroy,
:validation]
# GET /exo_alea
# GET /exo_alea.json
def index
@exo_alea= ExoAlea.all
end
# GET /exo_alea/1
# GET /exo_alea/1.json
def show
@exo_alea= ExoAlea.find(params[:id])
@a=rand(20)-rand(20)
@b=rand(2..7)
@c=rand(20)-rand(20)
@d=rand(2..7)
end
# GET /exo_alea/new
def new
@exo_alea= ExoAlea.new
end
# GET /exo_alea/1/edit
def edit
end
# POST /exo_alea
# POST /exo_alea.json
def create
@exo_alea= ExoAlea.new(exo_alea_params)
respond_to do |format|
if @exo_alea.save
format.html { redirect_to @exo_alea, notice: 'Exo sumfraction was
successfully created.' }
format.json { render :show, status: :created, location:
@exo_sumfraction }
else
format.html { render :new }
format.json { render json: @exo_alea.errors, status:
:unprocessable_entity }
end
end
end
# PATCH/PUT /exo_sumfractions/1
# PATCH/PUT /exo_sumfractions/1.json
def update
respond_to do |format|
if @exo_alea.update(exo_alea_params)
format.html { redirect_to @exo_alea, notice: 'Exo alea was
successfully updated.' }
format.json { render :show, status: :ok, location: @exo_alea}
else
format.html { render :edit }
format.json { render json: @exo_alea.errors, status:
:unprocessable_entity }
end
end
end
# DELETE /exo_alea/1
# DELETE /exo_alea/1.json
def destroy
@exo_alea.destroy
respond_to do |format|
format.html { redirect_to exo_alea_url, notice: 'Exo alea was
successfully destroyed.' }
format.json { head :no_content }
end
end
private
def set_exo_alea
@exo_alea= ExoAlea.find(params[:id])
end
def exo_alea_params
params.require(:exo_alea).permit(:title, :text, :help, :string, :time)
end
end
Bon quand tu auras répondu à ces 2 questions, j'espère que tu m'auras donné
la solution.
Merci infiniment.
--
--
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]
---
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant,
envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, visitez le site https://groups.google.com/d/optout .