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 
> <javascript:>> 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 <javascript:>
>> Pour résilier votre abonnement envoyez un e-mail à l'adresse 
>> railsfrance...@googlegroups.com <javascript:>
>> --- 
>> 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 
>> <javascript:>.
>> 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 à