Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
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 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Olivier El Mekki
Sans vouloir être rabbat joie, peut-être devriez-vous tout deux continuer 
cette discussion par mail privé, cela commence à devenir plus du pair 
programming qu'une discussion ouverte à mailer à des centaines de personnes 
;)



On Thursday, April 16, 2015 at 2:51:41 PM UTC+2, Philippe Demaria wrote:

 Bin non, mon pauvre, je le prends sur mes nuits et sur mes dimanchesEt 
 sur ma famille aussi.
 J'adore essayer de dompter les ordinateurs. C'est juste par challenges 
 intellectuels.
 Mais ce projet, je voudrais le présenter à plus grande échelle, et peut 
 être fonder une association. Alors là, ce serait différent.
 mon mail professionnel est demaria@lbfogota.com javascript:
 .

 Le jeudi 16 avril 2015 07:43:11 UTC-5, Guirec Corbel a écrit :


 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller
 .html.erb qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).


 Je voulais dire que, dans le contrôleur, quand tu feras 
 un ExoAlea.find(id) il te sortira une instance de la classe fille.

 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour 
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive 
 Google.


 On peut tester ça dimanche peut-être. Est-ce que tu fais ça à des fin 
 professionnel. Si oui, on peut s'arranger pour que je te donne du support à 
 plus long terme.

 Le 16 avril 2015 08:37, Philippe Demaria demaria@lfbogota.com a 
 écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu bouger 
 ceci : 

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7) 

 dans ton modèle.  = je viens de le faire. OK.


 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb. 
 Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je 
 comprends tu à la possibilité de créer/modifier/supprimer des exercices. 
 Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle réponse. 
 Je crois que je créer un AnswersController. Tu vue sera donc dans 
 app/views/answers/new.html.erb.

 = Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est donc 
 dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
 Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le 
 touche plus jamais !

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI), 
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite 
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type 
 ExoDisc.
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller.html.erb 
 qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).

 Si tu veux simplifier ton controlleur, tu peux utiliser 
 https://github.com/plataformatec/responders 
 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
  
 et https://github.com/hashrocket/decent_exposure . = on va y aller 
 doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà migrer 
 de Mongo vers PostGrei.

 J'aime bien aidé les gens quand c'est un problème que je connais bien. 
 Je pense que la communauté Ruby est plus petite que celle de PHP mais très 
 altruiste. Si tu étais proche, je serai probablement venu t'aider.
 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour 
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive 
 Google. 

  -- 
 -- 
 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 .


Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
Sinon, le code te parait bon ?

-- 
-- 
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 .


Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
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

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
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 
 javascript: 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 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
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 
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 .


Re: [RailsFr] Re: Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Guirec Corbel
Tu n'as pas besoin de route pour un modèle. C'est la même que ton
controlleur. ExoAlea.find(id) te donneras une instance ExoProdrelatif  si
tu as suivi le Single Table Inheritence.

2015-04-16 8:46 GMT-04:00 Philippe Demaria demaria.phili...@lfbogota.com:

 Mon exo qui englobe tous les autres :

 *model* : exo_alea.rb

 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: Float
   field :a, type: Float
   field :b, type: Float
   field :c, type: Float
   field :d, type: Float
   field :e, type: Float
   field :f, type: Float
   field :g, type: Float
   field :h, type: Float

   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


 *controller*: exo_aleas_controller.rb
 class ExoAleasController  ApplicationController
   before_action :authenticate_teacher!
   before_action :set_exo_alea, only: [:show, :edit, :update, :destroy,
 :validation]

   # GET /exo_discriminants/new
   def new
 @exo_alea = ExoAlea.new

   end

   # GET /exo_discriminants/1/edit
   def edit
   end

   # POST /exo_discriminants
   # POST /exo_discriminants.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: 'Exercice sur le
 exo_alea créé avec succès.' }
 format.json { render :show, status: :created, location: @exo_alea }
   else
 format.html { render :new }
 format.json { render json: @exo_alea.errors, status:
 :unprocessable_entity }
   end
 end
   end

   # GET /exo_aleas/1
   # GET /exo_aleas/1.json
   def show
 @exo_aleas = ExoAlea.find(params[:id])
   end

   # PATCH/PUT /exo_aleas/1
   # PATCH/PUT /exo_aleas/1.json
   def update
 respond_to do |format|
   if @exo_alea.update(exo_alea_params)
 format.html { redirect_to @exo_alea, notice: L'exercice a été mis
 à jour avec succès}
 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

   private
 # Use callbacks to share common setup or constraints between actions.
 def set_exo_alea
   @exo_alea = ExoAlea.find(params[:id])
 end

 # Never trust parameters from the scary internet, only allow the white
 list through.
 def exo_alea_params
   params.require(:exo_alea).permit(:time, :title, :text, :help,
 :reponseStudent)
 end

 end

 *Ma vue *show.html.erb

 div class=row
 div class=large-12 columns title_exercise
 h4%= @exo_alea.title % /h4
 h6%= fa_icon(barcode)% %= @exo_alea.id %%=
 fa_icon(clock-o)%%= @exo_alea.time % minutes/h6
 hr
 /div
 div class=large-12 columns title_exercise
   %= @exo_alea.text %
 /div
   %= simple_form_for @exo_alea,  defaults: { label: false } do |f| %

   div class=large-12 columns question_text
 div class=large-8 columns
   %= @exo_alea.enunciated %
 /div
 div class=large-4 columns
 div class=row collapse prefix-radius
 div class=small-3 columns
 span class=prefix$ A = $/span
 /div
 div class=small-9 columns
   %= f.input :reponseStudent, placeholder: Valeur de
 A %
   %= f.input :a, as: :hidden, input_html: {value: @a}
 %
   %= f.input :b, as: :hidden, input_html: {value: @b}
 %
   %= f.input :c, as: :hidden, input_html: {value: @c}
 %
   %= f.input :d, as: :hidden, input_html: {value: @d}
 %
 /div
 /div
 /div
   /div

   % if  @error %
   div class=large-12 columns question_help
 div id=valid_help %= fa_icon(cogs, class: fa-3x) % %=
 @exo_alea.help %/div
   /div
   % end %

   div class=form-actions
 %= f.button :submit, Valider la réponse %
   /div
 % end %


   % if teacher_signed_in? %
 div class=large-12 columns
   %= link_to 'Modifier', edit_exo_alea_path(@exo_alea) %
 /div
   % end %
 /div

 *ma route :* routes.rb
 resources :exo_aleas, except: [ :index ]
 get '/exo_aleas/:id' = 'exo_aleas#show'

  ça ce sont mes fichiers qui englobe tous les exercices.

 Puis après, j'ai un type d'exercice particulier. Je viens faire un qui
 s'appelle exo_prodrelatifs, sur le produit de relatifs. J'e n'ai donc que
 le model à écrire. Le voici

 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Benjamin Guimberteau
+1
Le 16 avr. 2015 14:53, Olivier El Mekki oelme...@gmail.com a écrit :

 Sans vouloir être rabbat joie, peut-être devriez-vous tout deux continuer
 cette discussion par mail privé, cela commence à devenir plus du pair
 programming qu'une discussion ouverte à mailer à des centaines de personnes
 ;)



 On Thursday, April 16, 2015 at 2:51:41 PM UTC+2, Philippe Demaria wrote:

 Bin non, mon pauvre, je le prends sur mes nuits et sur mes
 dimanchesEt sur ma famille aussi.
 J'adore essayer de dompter les ordinateurs. C'est juste par challenges
 intellectuels.
 Mais ce projet, je voudrais le présenter à plus grande échelle, et peut
 être fonder une association. Alors là, ce serait différent.
 mon mail professionnel est demaria@lbfogota.com
 .

 Le jeudi 16 avril 2015 07:43:11 UTC-5, Guirec Corbel a écrit :


 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller
 .html.erb qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).


 Je voulais dire que, dans le contrôleur, quand tu feras
 un ExoAlea.find(id) il te sortira une instance de la classe fille.

 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive
 Google.


 On peut tester ça dimanche peut-être. Est-ce que tu fais ça à des fin
 professionnel. Si oui, on peut s'arranger pour que je te donne du support à
 plus long terme.

 Le 16 avril 2015 08:37, Philippe Demaria demaria@lfbogota.com a
 écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu
 bouger ceci :

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7)

 dans ton modèle.  = je viens de le faire. OK.


 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb.
 Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je
 comprends tu à la possibilité de créer/modifier/supprimer des exercices.
 Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle réponse.
 Je crois que je créer un AnswersController. Tu vue sera donc dans
 app/views/answers/new.html.erb.

 = Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est donc
 dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
 Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le
 touche plus jamais !

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI),
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type
 ExoDisc.
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller.html.erb
 qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).

 Si tu veux simplifier ton controlleur, tu peux utiliser
 https://github.com/plataformatec/responders
 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
 et https://github.com/hashrocket/decent_exposure . = on va y aller
 doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà migrer
 de Mongo vers PostGrei.

 J'aime bien aidé les gens quand c'est un problème que je connais bien.
 Je pense que la communauté Ruby est plus petite que celle de PHP mais très
 altruiste. Si tu étais proche, je serai probablement venu t'aider.
 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence
 pour mon métier, si tu as un moment, c'est possible pour moi. Par HangOut,
 vive Google.

  --
 --
 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
 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Guirec Corbel
Olivier, t'as raison. Désolé.

Le 16 avril 2015 08:53, Olivier El Mekki oelme...@gmail.com a écrit :

 Sans vouloir être rabbat joie, peut-être devriez-vous tout deux continuer
 cette discussion par mail privé, cela commence à devenir plus du pair
 programming qu'une discussion ouverte à mailer à des centaines de personnes
 ;)



 On Thursday, April 16, 2015 at 2:51:41 PM UTC+2, Philippe Demaria wrote:

 Bin non, mon pauvre, je le prends sur mes nuits et sur mes
 dimanchesEt sur ma famille aussi.
 J'adore essayer de dompter les ordinateurs. C'est juste par challenges
 intellectuels.
 Mais ce projet, je voudrais le présenter à plus grande échelle, et peut
 être fonder une association. Alors là, ce serait différent.
 mon mail professionnel est demaria@lbfogota.com

 .

 Le jeudi 16 avril 2015 07:43:11 UTC-5, Guirec Corbel a écrit :


 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller
 .html.erb qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).


 Je voulais dire que, dans le contrôleur, quand tu feras
 un ExoAlea.find(id) il te sortira une instance de la classe fille.

 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive
 Google.


 On peut tester ça dimanche peut-être. Est-ce que tu fais ça à des fin
 professionnel. Si oui, on peut s'arranger pour que je te donne du support à
 plus long terme.

 Le 16 avril 2015 08:37, Philippe Demaria demaria@lfbogota.com a
 écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu
 bouger ceci :

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7)

 dans ton modèle.  = je viens de le faire. OK.


 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb.
 Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je
 comprends tu à la possibilité de créer/modifier/supprimer des exercices.
 Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle réponse.
 Je crois que je créer un AnswersController. Tu vue sera donc dans
 app/views/answers/new.html.erb.

 = Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est donc
 dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
 Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le
 touche plus jamais !

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI),
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type
 ExoDisc.
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller.html.erb
 qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).

 Si tu veux simplifier ton controlleur, tu peux utiliser
 https://github.com/plataformatec/responders
 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
 et https://github.com/hashrocket/decent_exposure . = on va y aller
 doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà migrer
 de Mongo vers PostGrei.

 J'aime bien aidé les gens quand c'est un problème que je connais bien.
 Je pense que la communauté Ruby est plus petite que celle de PHP mais très
 altruiste. Si tu étais proche, je serai probablement venu t'aider.
 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence
 pour mon métier, si tu as un moment, c'est possible pour moi. Par HangOut,
 vive Google.

  --
 --
 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 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
Ça commence à ressembler à quelque chose de bien. Je pense que tu bouger 
ceci : 

@a=rand(20)-rand(20)
@b=rand(2..7)
@c=rand(20)-rand(20)
@d=rand(2..7) 

dans ton modèle.  = je viens de le faire. OK.


Normalement, ta vue sera dans 
app/views/ton_controlleur_au_pluriel/ton_action.html.erb. 
Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je 
comprends tu à la possibilité de créer/modifier/supprimer des exercices. 
Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle réponse. 
Je crois que je créer un AnswersController. Tu vue sera donc dans 
app/views/answers/new.html.erb.

= Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est donc 
dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le touche 
plus jamais !

Au niveau de l'instanciation, c'est le Single Table Inheritance (STI), 
comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite 
de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type 
ExoDisc.
= Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
tous les exercices, c'est celui qui s'apelle exo_aleas_controller.html.erb qui 
hérite de ExoAleasController  ApplicationController
Dans mon modèle, je n'ai pas de Exo.find(id).

Si tu veux simplifier ton controlleur, tu peux utiliser 
https://github.com/plataformatec/responders 
https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
 
et https://github.com/hashrocket/decent_exposure . = on va y aller 
doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà migrer 
de Mongo vers PostGrei.

J'aime bien aidé les gens quand c'est un problème que je connais bien. Je 
pense que la communauté Ruby est plus petite que celle de PHP mais très 
altruiste. Si tu étais proche, je serai probablement venu t'aider.
Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour 
mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive 
Google. 

-- 
-- 
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 .


Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Guirec Corbel
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller
 .html.erb qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).


Je voulais dire que, dans le contrôleur, quand tu feras un ExoAlea.find(id)
il te sortira une instance de la classe fille.

Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive
 Google.


On peut tester ça dimanche peut-être. Est-ce que tu fais ça à des fin
professionnel. Si oui, on peut s'arranger pour que je te donne du support à
plus long terme.

Le 16 avril 2015 08:37, Philippe Demaria demaria.phili...@lfbogota.com a
écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu bouger
 ceci :

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7)

 dans ton modèle.  = je viens de le faire. OK.


 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb.
 Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je
 comprends tu à la possibilité de créer/modifier/supprimer des exercices.
 Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle réponse.
 Je crois que je créer un AnswersController. Tu vue sera donc dans
 app/views/answers/new.html.erb.

 = Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est donc
 dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
 Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le
 touche plus jamais !

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI),
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type
 ExoDisc.
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller.html.erb
 qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).

 Si tu veux simplifier ton controlleur, tu peux utiliser
 https://github.com/plataformatec/responders
 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
 et https://github.com/hashrocket/decent_exposure . = on va y aller
 doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà migrer
 de Mongo vers PostGrei.

 J'aime bien aidé les gens quand c'est un problème que je connais bien. Je
 pense que la communauté Ruby est plus petite que celle de PHP mais très
 altruiste. Si tu étais proche, je serai probablement venu t'aider.
 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive
 Google.

  --
 --
 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 .


[RailsFr] Re: Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
Mon exo qui englobe tous les autres :

*model* : exo_alea.rb

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: Float
  field :a, type: Float
  field :b, type: Float
  field :c, type: Float
  field :d, type: Float
  field :e, type: Float
  field :f, type: Float
  field :g, type: Float
  field :h, type: Float

  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 


*controller*: exo_aleas_controller.rb
class ExoAleasController  ApplicationController
  before_action :authenticate_teacher!
  before_action :set_exo_alea, only: [:show, :edit, :update, :destroy, 
:validation]

  # GET /exo_discriminants/new
  def new
@exo_alea = ExoAlea.new

  end

  # GET /exo_discriminants/1/edit
  def edit
  end

  # POST /exo_discriminants
  # POST /exo_discriminants.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: 'Exercice sur le 
exo_alea créé avec succès.' }
format.json { render :show, status: :created, location: @exo_alea }
  else
format.html { render :new }
format.json { render json: @exo_alea.errors, status: 
:unprocessable_entity }
  end
end
  end

  # GET /exo_aleas/1
  # GET /exo_aleas/1.json
  def show
@exo_aleas = ExoAlea.find(params[:id])  
  end

  # PATCH/PUT /exo_aleas/1
  # PATCH/PUT /exo_aleas/1.json
  def update
respond_to do |format|
  if @exo_alea.update(exo_alea_params)
format.html { redirect_to @exo_alea, notice: L'exercice a été mis 
à jour avec succès}
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

  private
# Use callbacks to share common setup or constraints between actions.
def set_exo_alea
  @exo_alea = ExoAlea.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white 
list through.
def exo_alea_params
  params.require(:exo_alea).permit(:time, :title, :text, :help,  
:reponseStudent)
end

end

*Ma vue *show.html.erb

div class=row
div class=large-12 columns title_exercise
h4%= @exo_alea.title % /h4
h6%= fa_icon(barcode)% %= @exo_alea.id %%= 
fa_icon(clock-o)%%= @exo_alea.time % minutes/h6
hr
/div
div class=large-12 columns title_exercise
  %= @exo_alea.text % 
/div
  %= simple_form_for @exo_alea,  defaults: { label: false } do |f| %

  div class=large-12 columns question_text
div class=large-8 columns
  %= @exo_alea.enunciated % 
/div
div class=large-4 columns
div class=row collapse prefix-radius
div class=small-3 columns
span class=prefix$ A = $/span
/div
div class=small-9 columns
  %= f.input :reponseStudent, placeholder: Valeur de 
A %
  %= f.input :a, as: :hidden, input_html: {value: @a} 
%
  %= f.input :b, as: :hidden, input_html: {value: @b} 
%
  %= f.input :c, as: :hidden, input_html: {value: @c} 
%
  %= f.input :d, as: :hidden, input_html: {value: @d} 
% 
/div   
/div   
/div
  /div

  % if  @error %
  div class=large-12 columns question_help
div id=valid_help %= fa_icon(cogs, class: fa-3x) % %= 
@exo_alea.help %/div  
  /div
  % end %  

  div class=form-actions
%= f.button :submit, Valider la réponse %
  /div
% end %


  % if teacher_signed_in? %
div class=large-12 columns 
  %= link_to 'Modifier', edit_exo_alea_path(@exo_alea) %
/div
  % end %
/div

*ma route :* routes.rb
resources :exo_aleas, except: [ :index ]
get '/exo_aleas/:id' = 'exo_aleas#show'

 ça ce sont mes fichiers qui englobe tous les exercices.

Puis après, j'ai un type d'exercice particulier. Je viens faire un qui 
s'appelle exo_prodrelatifs, sur le produit de relatifs. J'e n'ai donc que 
le model à écrire. Le voici

class ExoProdrelatif  ExoAlea

  def result_valid?
resultat = params[:exo_sumrelatif][:a].to_i * 
params[:exo_sumrelatif][:b].to_i * params[:exo_sumrelatif][:c].to_i  * 
params[:exo_sumrelatif][:d].to_i 
  if params[:exo_sumrelatif][:reponseStudent].to_i  == resultat
flash[:success] = Bonne réponse
 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
Oui bien sûr.
C'est pour ça que j'ai mis mon mail pro.

Le jeudi 16 avril 2015 07:53:46 UTC-5, Olivier El Mekki a écrit :

 Sans vouloir être rabbat joie, peut-être devriez-vous tout deux continuer 
 cette discussion par mail privé, cela commence à devenir plus du pair 
 programming qu'une discussion ouverte à mailer à des centaines de personnes 
 ;)



 On Thursday, April 16, 2015 at 2:51:41 PM UTC+2, Philippe Demaria wrote:

 Bin non, mon pauvre, je le prends sur mes nuits et sur mes 
 dimanchesEt sur ma famille aussi.
 J'adore essayer de dompter les ordinateurs. C'est juste par challenges 
 intellectuels.
 Mais ce projet, je voudrais le présenter à plus grande échelle, et peut 
 être fonder une association. Alors là, ce serait différent.
 mon mail professionnel est demaria@lbfogota.com
 .

 Le jeudi 16 avril 2015 07:43:11 UTC-5, Guirec Corbel a écrit :


 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller
 .html.erb qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).


 Je voulais dire que, dans le contrôleur, quand tu feras 
 un ExoAlea.find(id) il te sortira une instance de la classe fille.

 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour 
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive 
 Google.


 On peut tester ça dimanche peut-être. Est-ce que tu fais ça à des fin 
 professionnel. Si oui, on peut s'arranger pour que je te donne du support à 
 plus long terme.

 Le 16 avril 2015 08:37, Philippe Demaria demaria@lfbogota.com a 
 écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu 
 bouger ceci : 

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7) 

 dans ton modèle.  = je viens de le faire. OK.


 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb. 
 Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je 
 comprends tu à la possibilité de créer/modifier/supprimer des exercices. 
 Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle 
 réponse. 
 Je crois que je créer un AnswersController. Tu vue sera donc dans 
 app/views/answers/new.html.erb.

 = Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est donc 
 dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
 Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le 
 touche plus jamais !

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI), 
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite 
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de 
 type 
 ExoDisc.
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller.html.erb 
 qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).

 Si tu veux simplifier ton controlleur, tu peux utiliser 
 https://github.com/plataformatec/responders 
 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
  
 et https://github.com/hashrocket/decent_exposure . = on va y aller 
 doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà migrer 
 de Mongo vers PostGrei.

 J'aime bien aidé les gens quand c'est un problème que je connais bien. 
 Je pense que la communauté Ruby est plus petite que celle de PHP mais très 
 altruiste. Si tu étais proche, je serai probablement venu t'aider.
 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence 
 pour mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, 
 vive Google. 

  -- 
 -- 
 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 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
Tu fais déjà énormémént

Le jeudi 16 avril 2015 07:19:14 UTC-5, Guirec Corbel a écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu bouger 
 ceci : 

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7) 

 dans ton modèle.

 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb. Pour ton 
 contrôleur, ça dépend de ce que tu veux. D'après ce que je comprends tu à 
 la possibilité de créer/modifier/supprimer des exercices. Pour moi, tu 
 devrais créer un contrôleur pour ajouter une nouvelle réponse. Je crois que 
 je créer un AnswersController. Tu vue sera donc dans 
 app/views/answers/new.html.erb.

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI), 
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite 
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type 
 ExoDisc.

 Si tu veux simplifier ton controlleur, tu peux utiliser 
 https://github.com/plataformatec/responders et 
 https://github.com/hashrocket/decent_exposure .

 J'aime bien aidé les gens quand c'est un problème que je connais bien. Je 
 pense que la communauté Ruby est plus petite que celle de PHP mais très 
 altruiste. Si tu étais proche, je serai probablement venu t'aider.

 Le 16 avril 2015 08:06, Philippe Demaria demaria@lfbogota.com 
 javascript: a écrit :

 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 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Guirec Corbel
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.phili...@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
 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Guirec Corbel
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 = 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Guirec Corbel
Ça commence à ressembler à quelque chose de bien. Je pense que tu bouger
ceci :

@a=rand(20)-rand(20)
@b=rand(2..7)
@c=rand(20)-rand(20)
@d=rand(2..7)

dans ton modèle.

Normalement, ta vue sera dans
app/views/ton_controlleur_au_pluriel/ton_action.html.erb. Pour ton
contrôleur, ça dépend de ce que tu veux. D'après ce que je comprends tu à
la possibilité de créer/modifier/supprimer des exercices. Pour moi, tu
devrais créer un contrôleur pour ajouter une nouvelle réponse. Je crois que
je créer un AnswersController. Tu vue sera donc dans
app/views/answers/new.html.erb.

Au niveau de l'instanciation, c'est le Single Table Inheritance (STI),
comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite
de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type
ExoDisc.

Si tu veux simplifier ton controlleur, tu peux utiliser
https://github.com/plataformatec/responders et
https://github.com/hashrocket/decent_exposure .

J'aime bien aidé les gens quand c'est un problème que je connais bien. Je
pense que la communauté Ruby est plus petite que celle de PHP mais très
altruiste. Si tu étais proche, je serai probablement venu t'aider.

Le 16 avril 2015 08:06, Philippe Demaria demaria.phili...@lfbogota.com a
écrit :

 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= 

Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
Bin non, mon pauvre, je le prends sur mes nuits et sur mes dimanchesEt 
sur ma famille aussi.
J'adore essayer de dompter les ordinateurs. C'est juste par challenges 
intellectuels.
Mais ce projet, je voudrais le présenter à plus grande échelle, et peut 
être fonder une association. Alors là, ce serait différent.
mon mail professionnel est demaria.phili...@lbfogota.com
.

Le jeudi 16 avril 2015 07:43:11 UTC-5, Guirec Corbel a écrit :


 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller
 .html.erb qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).


 Je voulais dire que, dans le contrôleur, quand tu feras 
 un ExoAlea.find(id) il te sortira une instance de la classe fille.

 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour 
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive 
 Google.


 On peut tester ça dimanche peut-être. Est-ce que tu fais ça à des fin 
 professionnel. Si oui, on peut s'arranger pour que je te donne du support à 
 plus long terme.

 Le 16 avril 2015 08:37, Philippe Demaria demaria@lfbogota.com 
 javascript: a écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu bouger 
 ceci : 

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7) 

 dans ton modèle.  = je viens de le faire. OK.


 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb. 
 Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je 
 comprends tu à la possibilité de créer/modifier/supprimer des exercices. 
 Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle réponse. 
 Je crois que je créer un AnswersController. Tu vue sera donc dans 
 app/views/answers/new.html.erb.

 = Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est donc 
 dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
 Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le 
 touche plus jamais !

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI), 
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite 
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de type 
 ExoDisc.
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller.html.erb 
 qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).

 Si tu veux simplifier ton controlleur, tu peux utiliser 
 https://github.com/plataformatec/responders 
 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
  
 et https://github.com/hashrocket/decent_exposure . = on va y aller 
 doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà migrer 
 de Mongo vers PostGrei.

 J'aime bien aidé les gens quand c'est un problème que je connais bien. Je 
 pense que la communauté Ruby est plus petite que celle de PHP mais très 
 altruiste. Si tu étais proche, je serai probablement venu t'aider.
 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence pour 
 mon métier, si tu as un moment, c'est possible pour moi. Par HangOut, vive 
 Google. 

  -- 
 -- 
 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 .


Re: [RailsFr] Débutant...Comment utiliser une vue pour plusieurs controllers ?

2015-04-16 Par sujet Philippe Demaria
Je le redonne : demaria.phili...@lfbogota.com

Le jeudi 16 avril 2015 07:58:39 UTC-5, Philippe Demaria a écrit :

 Oui bien sûr.
 C'est pour ça que j'ai mis mon mail pro.

 Le jeudi 16 avril 2015 07:53:46 UTC-5, Olivier El Mekki a écrit :

 Sans vouloir être rabbat joie, peut-être devriez-vous tout deux continuer 
 cette discussion par mail privé, cela commence à devenir plus du pair 
 programming qu'une discussion ouverte à mailer à des centaines de personnes 
 ;)



 On Thursday, April 16, 2015 at 2:51:41 PM UTC+2, Philippe Demaria wrote:

 Bin non, mon pauvre, je le prends sur mes nuits et sur mes 
 dimanchesEt sur ma famille aussi.
 J'adore essayer de dompter les ordinateurs. C'est juste par challenges 
 intellectuels.
 Mais ce projet, je voudrais le présenter à plus grande échelle, et peut 
 être fonder une association. Alors là, ce serait différent.
 mon mail professionnel est demaria@lbfogota.com
 .

 Le jeudi 16 avril 2015 07:43:11 UTC-5, Guirec Corbel a écrit :


 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle exo_aleas_controller
 .html.erb qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).


 Je voulais dire que, dans le contrôleur, quand tu feras 
 un ExoAlea.find(id) il te sortira une instance de la classe fille.

 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence 
 pour mon métier, si tu as un moment, c'est possible pour moi. Par 
 HangOut, 
 vive Google.


 On peut tester ça dimanche peut-être. Est-ce que tu fais ça à des fin 
 professionnel. Si oui, on peut s'arranger pour que je te donne du support 
 à 
 plus long terme.

 Le 16 avril 2015 08:37, Philippe Demaria demaria@lfbogota.com a 
 écrit :

 Ça commence à ressembler à quelque chose de bien. Je pense que tu 
 bouger ceci : 

 @a=rand(20)-rand(20)
 @b=rand(2..7)
 @c=rand(20)-rand(20)
 @d=rand(2..7) 

 dans ton modèle.  = je viens de le faire. OK.


 Normalement, ta vue sera dans 
 app/views/ton_controlleur_au_pluriel/ton_action.html.erb. 
 Pour ton contrôleur, ça dépend de ce que tu veux. D'après ce que je 
 comprends tu à la possibilité de créer/modifier/supprimer des exercices. 
 Pour moi, tu devrais créer un contrôleur pour ajouter une nouvelle 
 réponse. 
 Je crois que je créer un AnswersController. Tu vue sera donc dans 
 app/views/answers/new.html.erb.

 = Mon dossier qui contient ma vue s'appelle exo_aleas. Ma vue est 
 donc dans app/wiews/exos_aleas/show.html.erb. Jusque là, c'est bon.
 Une fois que l'exercice aléatoire est créé avec sa réponse, je ne le 
 touche plus jamais !

 Au niveau de l'instanciation, c'est le Single Table Inheritance (STI), 
 comme dans le lien que je t'ai fourni. Si tu un classe ExoDisc qui hérite 
 de Exo, tu peux faire Exo.find(id) et il va te retourner une classe de 
 type 
 ExoDisc.
 = Là tu me parles du controller. Or, je n'ai qu'un seul controller pour 
 tous les exercices, c'est celui qui s'apelle 
 exo_aleas_controller.html.erb 
 qui hérite de ExoAleasController  ApplicationController
 Dans mon modèle, je n'ai pas de Exo.find(id).

 Si tu veux simplifier ton controlleur, tu peux utiliser 
 https://github.com/plataformatec/responders 
 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fplataformatec%2Fresponderssa=Dsntz=1usg=AFQjCNHNNun_c1fE27LF-1IghU5aS-XDrg
  
 et https://github.com/hashrocket/decent_exposure . = on va y aller 
 doucement. Quand j'aurais tout bien compris je verrai. Je vais déjà 
 migrer 
 de Mongo vers PostGrei.

 J'aime bien aidé les gens quand c'est un problème que je connais bien. 
 Je pense que la communauté Ruby est plus petite que celle de PHP mais 
 très 
 altruiste. Si tu étais proche, je serai probablement venu t'aider.
 Je ne voudrais pas abuser mais je fais souvent des vidéo conférence 
 pour mon métier, si tu as un moment, c'est possible pour moi. Par 
 HangOut, 
 vive Google. 

  -- 
 -- 
 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