Flux RSS
fév 13

Convertir un Array en Hash en Ruby (pour le select de formtastic)

Posté Dimanche 13 février 2011 dans Formtastic, Snippets

Voici un petit snippet en Ruby permettant de transformer un Array sous la forme :

  COUNTRIES = [
    "Kingdom of Morocco",
    "People's Democratic Republic of Algeria",
    "Great Socialist People's Libyan Arab Jamahiriya",
    "Kingdom of Saudi Arabia",
    "Hashemite Kingdom of Jordan",
    'Syrian Arab Republic',
    "United Arab Emirates",
    "Republic of Yemen",
    "Islamic Republic of Iran"
  ]

En Hash sous la forme :

{
 "Kingdom of Morocco"=>0,
 "People's Democratic Republic of Algeria"=>1,
 "Great Socialist People's Libyan Arab Jamahiriya"=>2,
 "Kingdom of Saudi Arabia"=>3,
 "Hashemite Kingdom of Jordan"=>4,
 "Syrian Arab Republic"=>5,
 "United Arab Emirates"=>6,
 "Republic of Yemen"=>7,
 "Islamic Republic of Iran"=>8
}

Voici donc le Snippet

  def self.countries_with_ids
    Hash[*COUNTRIES.collect { |c|
        [c, COUNTRIES.index(c)]
    }.flatten]
  end

Particulièrement efficace avec les input select de formtastic

fév 11

Créer un contrôleur pour les pages statiques dans Rails

Posté Vendredi 11 février 2011 dans Controller, Snippets

  1. Catcher toutes les requêtes avec un Glob dans routes.rb (dernière route), avec name le nom de la page pouvant contenir un chemin du type ‘services/home’
  2. get "/*name", :to => "pages#show"
  3. Créer un controleur PageController avec une action show
  4. class PagesController < ApplicationController
      def show
        ext = ".html.haml"
        dirname = File.dirname(params[:name])
        filename = File.basename(params[:name] + ext)
        Dir.chdir(File.join(RAILS_ROOT, "app", "views", "pages"))
        static_pages = Dir.glob(File.join(dirname, "*" + ext))
        raise "404" unless static_pages.include?(File.join(dirname, filename))
        @message = "Welcome to #{params[:name]}"
        render File.join("pages", dirname, filename)
      end
    end
    
  5. Créer une structure de pages à l’intérieur de app/views/pages/
  6. app/
    -- views/
    -- -- pages/
    -- -- -- home.html.haml
    -- -- -- contact-us.html.haml
    -- -- -- services/
    -- -- -- -- warranty.hmtl.haml
    -- -- -- -- advices.html.haml
    -- -- -- -- subdir/
    -- -- -- -- -- last_file
    
  7. Accéder aux pages en tapant :
  • rails_app/home
  • rails_app/contact-us
  • rails_app/services/warranty
  • rails_app/services/advices
  • rails_app/services/subdir/last_file
juil 16

Formatage de texte : Ruby on Rails Helpers

Posté Vendredi 16 juillet 2010 dans Snippets

Voici quelques fonctions incluses dans la plateforme Rails à utiliser pour formater du texte :

Module : ActionView::Helpers::TextHelper

  • auto_link(text, *args, &block)
    Transforme les URLs et adresses email en liens cliquables
  • concat(string, unused_binding = nil)
    S’il n’est pas possible d’utiliser <%= ‘hello’ %> dans une view
  • current_cycle(name = « default »)
    Retourne le cycle courant quand cycle a été lancée
  • cycle(first_value, *values)
    Permet de créer un cycle entre des éléments et appelle la fonction to_s en alternance (à utiliser par exemple pour changer de classe pour chaque ligne dans un tableau)
  • excerpt(text, phrase, *args)
    Extrait de texte à partir de la première instance de ‘phrase’ dans un rayon. Exemple ‘Bonjour, vos amis sont mes amis’ => … amis sont mes…
  • highlight(text, phrases, *args)
    Insert <strong class=’highlight’>…</strong> partout ou leq ‘phrases’ sont trouvés dans ‘text’ (phrases peut être un array)
  • markdown(text)
    Retourne le texte transformé suivant la librairis de Mark Down installés (BlueCloth par exemple)
  • pluralize(count, singular, plural = nil)
    Transforme le singulier en pluriel si cela est possible en fonction du count donné.
  • reset_cycle(name = « default »)
    Remet à zéro le cycle s’il avait été commencé
  • simple_format(text, html_options={})
    Retourne le texte transformé en HTML. Utile pour la transformation des paragraphes définis par des ‘\n’ en <p></p>
  • textilize(text, *options)
    Utilise RedCloth pour transformer en HTML un texte écrit en Textile
  • textilize_without_paragraph(text)
    Même chose que la précédente méthode, sauf qu’elle ne rajoute pas les <p> que RedCloth ajoute automatiquement
  • truncate(text, *args)
    Tronque le texte en utilisant :length comme longueur (par défaut : 30). Si la longueur du texte obtenu est supérieure à :length, ajoute « … » ou la chaîne de caractère :omission si donnée en paramètres.
  • word_wrap(text, *args)
    Crée des lignes à partir d’un texte en s’assurant que chaque ligne ne dépasse pas :line_width donnée en paramètre (par défault : 80)

Dès qu’on commence à utiliser ces fonctions, elles deviennet véritablemen des incontournables !

jan 11

Convertir Datetime en format Ruby et pour la base de données

Posté Lundi 11 janvier 2010 dans Snippets

Format personnel vers Ruby

Je veux transformer une date du style « 23/11/2009  » en Time de Ruby :

>> Time.now
=> Mon Jan 11 13:37:11 +0000 2010
>> Time.now.to_s(:db)
=> "2010-01-11 13:38:38"
>> ma_date = "23/11/2009"
=> "23/11/2009"
>> j, m, a = ma_date.split('/')
=> ["23", "11", "2009"]
>> mon_datetime = Time.local(a,m,j)
=> Mon Nov 23 00:00:00 +0000 2009

Ruby >> SQL

En Ruby :

>> Time.now
=> Mon Jan 11 13:23:17 +0000 2010

Pour faire la conversion (j’utilise MySQL) :

>> Time.now.to_s(:db)
=> "2010-01-11 13:38:38"
WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera