Journal du Net > Développeurs > Contributions > Soumettez votre meilleure astuce Ruby on Rails
Validation d’un formulaire non lié à la base de données avec Ruby On Rails

 Validation d’un formulaire non lié à la base de données avec Ruby On Rails  

Raphaël Emourgeon le 04 novembre 2009

Quel est en quelques lignes l'objectif de votre astuce ?

Ruby On Rails est réputé pour ses fonctionnalités en terme d’application Internet « database driven » mais même si la majorité des applications Internet d’aujourd’hui reposent sur une base de données, certains traitements ne nécessitent pas toujours l’utilisation d’une base de données. Comment valider proprement un formulaire de contact qui enverra un email par exemple ?

Décrivez votre astuce en détails. N'hésitez-pas à inclure des portions de codes.

Activeform (disponible ici : http://www.realityforge.org/svn/code/active-form/trunk/), permet de traiter ce cas en à peine quelques lignes ! Tout d’abord il faut créer un modèle héritant de Activeform dans lequel on défini les validations habituelles de Rails et les attributs du formulaire :

class FormContact < ActiveForm
  attr_accessor :motif, :message
  validates_presence_of :motif, :message
end

Dans notre contrôleur on instancie un nouvel objet ContactForm avant d’afficher le formulaire :

def index
  @form_contact = FormContact.new
end

Puis notre vue :

<% form_for(:form_contact, :url => {:action => :create}) do |f| %>
 <%= error_messages_for(:form_contact) %>
 <%= f.text_field(:motif) %>
 <%= f.text_area(:message) %>
 <%= submit_tag('Envoyer') %>
<% end %>

Il ne reste plus qu’à utiliser toute la puissance d’ActiveForm pour valider notre formulaire comme on le ferait pour n’importe quel objet ActiveRecord :

def contact
  @form_contact = FormContact.new(params[:form_contact])
  if @form_contact.valid?
    ContactMailer.deliver_contact(@form_contact)
  else
    render(:action => 'index')
  end
end

ps : attention à ne pas confondre avec ce gem homonyme : http://activeform.rubyforge. Org/


Ce contenu a été réalisé par le blog accoladech : http://www.accolade. Ch (Raphaël Emourgeon) sous licence Creative Commons.

  • Soyez le premier ou la première à réagir à ce temoignage : réagir
3 contributions : 1 2 3
 
Autour du même sujet

Soumettez votre meilleure astuce Oracle Database ? - appel à temoin

Soumettez votre meilleure astuce pour référencer des vidéos - appel à temoin

Ruby on rails pdf - tutoriel/pratique

Soumettez votre meilleure astuce pour assurer l'accessibilité d'un site Web - appel à temoin

Soumettez votre meilleure astuce HTML - appel à temoin

Envoyer des e-mails avec une application Ruby on Rails - tutoriel/pratique

Ruby on Rails 3 sous Mac OS X - tutoriel/pratique

Soumettez votre meilleure astuce C# - appel à temoin

Soumettez votre meilleure astuce DHTML - appel à temoin

Magazine Développeurs Envoyer Imprimer Haut de page




A VOIR EGALEMENT