Mince parti trop vite.

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

Merci infiniment.

Le jeudi 16 avril 2015 07:04:57 UTC-5, Philippe Demaria a écrit :
>
> 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
>
> *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_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 4 questions, j'espère que tu m'auras 
> donné la solution.
>
> Merci infiniment.
>
> Le jeudi 16 avril 2015 06:57:17 UTC-5, Guirec Corbel a écrit :
>>
>> 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....@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 
>>> 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 plus d'options, visitez le site https://groups.google.com/d/optout .

Répondre à