Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Ruby
Ruby Le forum sur la programmation Ruby. Voir aussi la FAQ Ruby et les cours Ruby.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/10/2006, 09h20   #1
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Par défaut Contribuez - Création de ressources Ruby

Bonjour à tous.

Nous aimerions développer la section Ruby / RoR de developpez.com.
L'idéal serait de pouvoir créer une FAQ ainsi que quelques tutoriels.

Afin de créer une FAQ, n'hésitez pas à poster en enfilade les questions / réponses qui vous viennent à l'esprit, celles que vous auriez aimé trouver sur un forum, ...

Si vous souhaitez rédiger des articles / tutoriels (initiation, installation, avancé, .....) n'hésitez pas à me contacter par MP.

Vous pouvez également demander un blog sur Developpez.

d'avance à tous, et n'hésitez pas si vous souhaitez plus de détails.
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 02h12   #2
Membre extrêmement actif
 
Avatar de kedare
 
Mathieu
Administrateur systèmes et réseaux
Inscription : juillet 2005
Messages : 1 476
Détails du profil
Informations personnelles :
Nom : Mathieu
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : juillet 2005
Messages : 1 476
Points : 1 260
Points : 1 260
j'ai fait un ptit script marrant pour "berner" les clients mails (testé sur thunderbird)
en faite c'est un faux serveur smtp qui est compatible avec les clients mails , il recois le contenu du mail et l'ecrit dans un fichier
codé en socket brute
voila la source dans un fichier compressé :
http://kedare.free.fr/Dist/smtp.tar.bz2
kedare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 14h25   #3
Membre du Club
 
Inscription : juillet 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 52
Points : 66
Points : 66
Par défaut ActiveRecord::base empty?

Rails

Q: Définir "empty?" pour tous vos modèles

R: "attribute_names" & "attribute_present?"

Vous est-il arrivé de regretter de ne pouvoir écrire quelque chose du genre "@personne.empty?" ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
module ApplicationHelper
   ...
end

#surcharge ActiveRecord
class ActiveRecord::Base
	
	
	# renvoi true si aucun attribut n'est renseigné
	def empty?
	
		attribute_names.each do |attribute|
			return false if attribute_present?(attribute)
		end  
	
		return true
	end
end
- Dans "application_helper.rb" on ajoute la définition "empty?" à ActiveRecord::Base afin d'en faire bénéficier tous nos modèles de l'application sans autre intervention.
- On itère sur la liste des attributs afin de tester la virginité de chacun.
- On renvoi "false" dès rencontré le premier attribut renseigné

A savoir, "attribute_present?" retourne "false" dans les cas suivants
- l'attribut vaut "nil"
- l'attribut est "empty"
- l'attribut contient "0" (zéro)

test :
Code :
1
2
3
4
5
6
7
8
irb(main):042:0> @p = Personne.new
=> #<Personne:0x4767bb4 @attributes= ...@new_record=true>
irb(main):043:0> @p.nom
=> nil
irb(main):044:0> @p.nom = ''
=> ""
irb(main):046:0> @p.empty?
=> true

Pour info : La définition de "attribute_present?" se trouve dans "base.rb" de ActiveRecord (par exemple C:\InstantRails\ruby\lib\ruby\gems\1.8\gems\activerecord-1.15.3\lib\active_record)

Eventuelles suggestions bienvenues
Renaud° est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 20h04   #4
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Salut

Citation:
Envoyé par Renaud° Voir le message
Eventuelles suggestions bienvenues
Plutôt que d'ajouter ça dans un helper, ne serait-t-il pas plus correct de créer un fichier dans lib/ puis d'en faire un require dans environment.rb ?

D'autre part j'ai du mal à voir un cas d'utilisation où un modèle sauvé en BDD est vide. Notamment je ne vois pas comment son 'id' peut-être empty?. Et si il n'est pas sauvé, on peut utiliser new_record?.
Est-ce que tu pourrais donner un exemple d'utilisation ?


Sinon c'est un bon exemple d'extension d'AR::Base
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 21h36   #5
Membre du Club
 
Inscription : juillet 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 52
Points : 66
Points : 66
Salut Taum,

Citation:
Envoyé par Taum Voir le message
Salut

Plutôt que d'ajouter ça dans un helper, ne serait-t-il pas plus correct de créer un fichier dans lib/ puis d'en faire un require dans environment.rb ?
Effectivement, ce serait mieux, je ne m'y étais pas encore interessé, merci du tuyau.

Citation:
D'autre part j'ai du mal à voir un cas d'utilisation où un modèle sauvé en BDD est vide. Notamment je ne vois pas comment son 'id' peut-être empty?. Et si il n'est pas sauvé, on peut utiliser new_record?.
"attribute_names" ne renvoi pas l'attribut "id", il n'est donc pas testé dans la boucle de l'"empty?" que je proposais, laquelle peut renvoyer "true" sur un enregistrement existant en BDD, quant à "new_record?" je m'en servirai pour supprimer l'enregistrement de la base si nécessaire.

Citation:
Est-ce que tu pourrais donner un exemple d'utilisation ?
La structure de ma base veut que les adresses soient dans une table à part. Dans le formulaire de "personne" je propose la saisie des deux objets "personne" et "adresse". Ces deux modèles sont liés par une relation "belongs_to :adresse" / "has_one :personne" et je récupère les infos du formulaire sous cette forme :

Code :
1
2
3
4
5
6
7
8
9
 
def create
  @personne = Personne.new(params[:personne])
  @adresse   = Adresse.new(params[:adresse])
  @personne.adresse = @adresse unless @adresse.empty?
 
  if @personne.save 
    ... etc
end
La saisie de l'adresse n'est pas obligatoire, si j'affecte "@adresse" à "@personne.adresse" et que l'utilisateur laisse l'adresse vierge, un enregistrement vide sera inséré dans ma table adresses, c'est pourquoi un test est nécessaire. Une autre possiblité aurait été de tester "params[:adresse]" et de faire un "@personne.build_adresse..." sous condition, ce qui n'aurait pas été laid, mais j'ai d'autres ambitions : on peut voir cela plus comme une espèce de validation, donc ayant plus sa place dans le modèle que dans le controleur.

Citation:
Sinon c'est un bon exemple d'extension d'AR::Base
Merci de ta critique
Renaud° est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 02h03   #6
Membre à l'essai
 
Étudiant
Inscription : août 2007
Messages : 24
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 24
Points : 21
Points : 21
Bonjour à tous,

j'ai débuter ruby depuis peu donc (2jours) j'ai commencé par faire une petite application de photos à l'aide d'un livre qui n'est d'ailleurs pas répertorié que je trouve très bien fait

RUBY ON RAILS vite et efficace de Bruce A.Tate et Curt Hibbs (créateur d'instant rails qd meme merci à lui )

le livre n'est pas un gros pavé, il est très agréable à lire on nous explique bien tous les détails, l'annexe est fournie c'est que du bonheur ^^

il faut cependant connaitre les bases d'ajax et des CSS pour bien comprendre et le principe du modèle vue controleur meme si cela est reexpliqué ca s'adresse donc à des développeurs qui connaissent déja l'objet c'est un bon prérequis...

j'ai fait une démo de ce que l'on peut faire en 2jours tranquillement en decortiquant ce que l'on essaye de faire je peux vous la fournir ou l'heberger si vous voulez ... on y voit les vues de echaffaudages refaites et améliorées, la gestion d'un modele avec recursivité pour les catégories en gérant les "ancetres" parents etc... les listes de diapositives contenant des photos qui peuvent etre lues grace à lajax avec un changement de photos toutes les 2sec et l'utilisation du drag and drop pour changer l'ordre des photos...(qui est vraiment facile à mettre en oeuvre).
enfin l'utilisation des vérifications directement dans le modele pour le nom d'une photo qui se doit d'être renseigné, dans la vue d'ajout si l'on ne renseigne pas le champs cela génère automatiquement le message d'erreur.

à ce propos si quelqu'un sait comment personnaliser ces messages d'erreurs je veux qu'il m'exlique en anglais c'est pas top de meme pour les champs de type date les jours en anglais c'est pas super ^^

je pense améliorer l'application avec un upload + redimensionnement avec rmagick comme plugin et essayer d'inserer une authentification avec plugin authentif restful comme ca cela sera assez complet

EDIT : j'ai mis le lien de démo mais c pas fameux je peux la faire passer au besoin par mp contactez moi

http://www.dailymotion.com/leken11/v...v4mp_demo_tech
leken11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 13h14   #7
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Hello,

Citation:
Envoyé par leken11 Voir le message
à ce propos si quelqu'un sait comment personnaliser ces messages d'erreurs je veux qu'il m'exlique en anglais c'est pas top de meme pour les champs de type date les jours en anglais c'est pas super ^^
Y'a qu'a demander

Comment françiser une application Rails (avec l10n-simplified) ?

l10n-simplified (LocalizationSimplified) est un plugin très simple pour changer la langue d'une application Rails. Contrairement à Globalize, ce plugin ne permet pas de faire une application multilingue ! (mais il est beaucoup plus simple à utiliser).

1) Installation du plugin :
Code :
1
2
3
4
liv:~/Rails/asleep.fr taum$ script/plugin install svn://rubyforge.org/var/svn/l10n-simplified
A    /Users/taum/Rails/asleep.fr/vendor/plugins/l10n-simplified
[...]
Exporté à la révision 92.
2) Ouvrez le fichier vendor/plugins/l10n-simplified/init.rb. Commentez la ligne require 'lang_da' et décommentez celle correspondant à votre langue (lang_fr pour le français).

3) Et non, il n'y a pas de 3 ...


Votre application est maintenant en français. Messages d'erreurs, Dates, Nombres, Helpers (Array#to_sentence ) ...

N'hésitez pas à editer le fichier vendor/plugins/l10n-simplified/lib/lang_fr.rb si vous n'aimez pas une des traductions proposée
N'oubliez pas de rédémarrer votre serveur de développement après chaque changement pour qu'il soit pris en compte.
__________________
Toute la documentation Ruby on Rails : gotapi.com/rubyrails
Mes articles :
> HAML : langage de template pour Ruby on Rails
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 15h52   #8
Membre à l'essai
 
Étudiant
Inscription : août 2007
Messages : 24
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 24
Points : 21
Points : 21
cool mci bcp jinstalle ca direct

EDIT : c'est abusément simple à mettre en place
leken11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 16h01   #9
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
sinon, tu peux lui préciser le message à la main :

Citation:
DEFAULT_VALIDATION_OPTIONS = { :on => :save, :allow_nil => false, :message => nil
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 16h07   #10
Membre à l'essai
 
Étudiant
Inscription : août 2007
Messages : 24
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 24
Points : 21
Points : 21
tu met ca dans le modele ?
leken11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 11h48   #11
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
FAQ Ruby

Q : Comment ne conserver que les caractères alphanumériques dans une chaîne ?

R : Il suffit d'utiliser l'expression régulière suivante :

Code :
1
2
3
4
 
a = "eegv 42 efef*/ezf*+ukujk+ 68@^\`|[{#*/+8*/_-+*/ ' dsgsdf 526 f4ze"
 
puts a.gsub(/[^[:alnum:]]/, '')
Résultat :

Citation:
eegv42efefezfukujk688dsgsdf526f4ze
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 14h47   #12
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
FAQ Rails / RJS :

Q : Comment retarder un effet ?

R : Rien de plus simple, il suffit d'utiliser page.delay comme suit :

Code :
1
2
3
page.delay(3.0) do
   page.visual_effect(:highlight, "mon_element")
end
Pour effectuer des retards en cascade, il suffit d'imbriquer les page.delay.
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 14h49   #13
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
FAQ Rails / RJS :

Q : Comment exécuter un effet au chargement de la page ?

R : Il faut pour cela utiliser update_page_tag dans votre vue :

Code :
1
2
3
4
5
 
<%= update_page_tag do |page|
        page.visual_effect(:highlight, "mon_element")
    end
%>
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 11h53   #14
Membre régulier
 
Avatar de abir84
 
Inscription : mars 2007
Messages : 213
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : mars 2007
Messages : 213
Points : 79
Points : 79
FAQ Ruby
Q : Comment convertir une String en Hash?

R : Utiliser la fonction eval
Code :
1
2
3
 
str="{'s1'=>1,'s2'=>'v2'}"
eval(str)
et ça donne
Code :
1
2
3
4
5
6
7
 
str.class
=> String
eval(str)
=> {"s1"=>1, "s2"=>"v2"}
eval(str).class
=> Hash
abir84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2009, 11h02   #15
Membre actif
 
Avatar de rivsc
 
Sylvain Claudel
Inscription : décembre 2008
Messages : 195
Détails du profil
Informations personnelles :
Nom : Sylvain Claudel
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : décembre 2008
Messages : 195
Points : 199
Points : 199
FAQ : ROR
Q: Comment faire une liste déroulante simplement et sans écrire d'html dans un formulaire ?
R: Avec Collection_select

Détail :
Liste déroulante pour les formulaires avec les helpers de base.

Controller products
Code :
1
2
3
 
@list_families = Family.find(:all)
@product = Product.find(params[:id])
View edit
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<% form_for(@product, :url => {:action => "update"} ) do |f| %>
<%= f.collection_select :family_id,
          @list_families,
          :id,
          :name,
          {
            :include_blank => "Choississez une famille",
            :selected => @product.family.id.to_s
          } %>
        <%= f.submit "Mise à jour" %>
<% end %>
rivsc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h34.


 
 
 
 
Partenaires

Hébergement Web