1 controlleur, une vue, 1 modèle de base et des modèles enfants pour la
logique spécifique de chaque exercice.

Le 16 avril 2015 07:56, Philippe Demaria <demaria.phili...@lfbogota.com> a
écrit :

> la question que je me pose est :
> pour 1000 exos, combien de controlle, de model et de vues ?
>
>
> Le jeudi 16 avril 2015 06:49:47 UTC-5, Guirec Corbel a écrit :
>>
>> Je pense qu'il faudrait que tu utilises l'action new pour afficher le
>> questionnaire et que tu fasses la validation dans create. Il faut essayé de
>> correspondre à une interface CRUD le plus possible. Si ces actions sont
>> déjà prises, je pense que tu devrais créer un nouveau contrôleur.
>>
>> Le 15 avril 2015 21:11, Philippe Demaria <demaria....@lfbogota.com> a
>> écrit :
>>
>>> Dans ma vue show, j'ai
>>> <%= simple_form_for @exo_alea, :url => {:controller => "exo_aleas",
>>> :action => "validation"},  defaults: { label: false } do |f| %>
>>>
>>> Dans le cas utilisé danbs mon précédent post,
>>> je dois changer :url => {:controller => "exo_aleas", :action =>
>>> "validation"}. Je mets quoi à la place ?
>>>
>>> Merci.
>>>
>>>
>>>
>>>
>>> Le mercredi 15 avril 2015 19:05:26 UTC-5, Philippe Demaria a écrit :
>>>>
>>>> D'après ce que je comprends :
>>>>
>>>> Considérons que je veux créer 1000 exercices aléatoires
>>>>
>>>> *... eh oui !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
>>>>
>>>> *Question 1 : Donc si j'ai 1000 exos, j'aurais 1000 models specifiques
>>>> ?*
>>>>
>>>> *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 2 : 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 3 : J'ai un unique controller ou 1000 controllers ?*
>>>>
>>>> *Question 4 : 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_sumfraction.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_sumfraction = ExoSumfraction.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 4 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
>>> rails...@googlegroups.com
>>> Pour résilier votre abonnement envoyez un e-mail à l'adresse
>>> railsfrance...@googlegroups.com
>>> ---
>>> 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 railsfrance...@
>>> googlegroups.com.
>>> Pour obtenir davantage d'options, consultez la page
>>> https://groups.google.com/d/optout.
>>>
>>
>>  --
> --
> 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
> railsfrance@googlegroups.com
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> railsfrance-unsubscr...@googlegroups.com
> ---
> 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
> railsfrance+unsubscr...@googlegroups.com.
> Pour obtenir davantage d'options, consultez la page
> https://groups.google.com/d/optout.
>

-- 
-- 
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 
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
railsfrance-unsubscr...@googlegroups.com
--- 
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 railsfrance+unsubscr...@googlegroups.com.
Pour plus d'options, visitez le site https://groups.google.com/d/optout .

Répondre à