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 .