Changeset 380a700a6814a7356b9e61ea1bd9b3a88ababdc5
- Timestamp:
- 07/27/10 22:42:34 (6 weeks ago)
- Author:
- Alban Peignier <alban@…>
- Parents:
- 96b960ab28342be2b47c677a1e8a569f8e5cf395
- Children:
- acff4dc3eee6e062cc1a86e06e6fd6fba910ee78
- git-committer:
- Alban Peignier <alban@tryphon.eu> / 2010-07-27T22:42:34Z+0200
- Message:
-
Create the Episode#slug with supported length. Refs #17
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r75ab01a
|
r380a700
|
|
| 20 | 20 | |
| 21 | 21 | def create_slug |
| 22 | | @slug = Slug.slugify(params[:name]) |
| | 22 | @slug = Slug.slugify(params[:name], Episode.slug_length) |
| 23 | 23 | end |
| 24 | 24 | |
-
|
r96b960a
|
r380a700
|
|
| 17 | 17 | validates_presence_of :description, :message => "Pas de description définie" |
| 18 | 18 | |
| | 19 | @@slug_length = 40 |
| | 20 | cattr_reader :slug_length |
| | 21 | |
| 19 | 22 | validates_presence_of :slug, :message => "Pas de lien défini" |
| 20 | | validates_length_of :slug, :within => 3..40, :wrong_length => "Le lien doit contenir entre 3 et 30 lettres" |
| | 23 | validates_length_of :slug, :within => 3..slug_length, :wrong_length => "Le lien doit contenir entre 3 et #{slug_length} lettres" |
| 21 | 24 | validates_format_of :slug, :with => /^[a-z0-9-]*$/, :message => "Le lien ne peut contenir que des minuscules, des chiffres et des tirets" |
| 22 | 25 | validates_uniqueness_of :slug, :scope => :show_id, :message => "Un épisode utilise déjà ce lien" |
-
|
r229ce6b
|
r380a700
|
|
| | 1 | # -*- coding: utf-8 -*- |
| 1 | 2 | class Slug |
| 2 | | def self.slugify(text) |
| | 3 | def self.slugify(text, length = 30) |
| 3 | 4 | return "" if text.nil? or text.strip.blank? |
| 4 | | reduce_separators(replace_specials(text.downcase).gsub(/[^a-z0-9-]+/, ' ').strip.gsub(' ','-')[0..29]) |
| | 5 | reduce_separators(replace_specials(text.downcase).gsub(/[^a-z0-9-]+/, ' ').strip.gsub(' ','-')[0..length-1]) |
| 5 | 6 | end |
| 6 | 7 | |