2010-09-28 2 views
2

Как заменить «» и «_» на «-» в моем контроллере при создании нового сообщения?rails gsub question

У меня есть следующие поля формы: названия URL содержания

Я хочу, чтобы выполнить GSUB на поле URL.

Спасибо ...

ответ

0

Если вы пытаетесь тихоход название, то вы можете найти friendly_id Нормана некоторого использования:

http://github.com/norman/friendly_id

Он будет заботиться о создании пермалинки для вас, так что вам не придется беспокоиться о duplica или генерации URL-адреса в вашем приложении. Он также будет интегрирован с ActiveRecord, чтобы переопределить методы поиска.

+0

Matt спасибо, я получил его работу, и это было именно то, что я искал! – andkjaer

0

title.gsub(/[\s_]+/, '-').strip

+0

Как настроить его в действии контроллера? – andkjaer

1

Помните, что избавления от пространства и «_» от URL-адреса недостаточно, так как есть некоторые другие символы, которые разбивают ваш код HTML и даже вызывают инъекцию скрипта. <>'"/\.

Предлагаю передать все буквы и цифры - все остальное перевести на -.

class Post < ActiveRecord::Base 
    attr_protected :url 
    validates_presence_of :title 
    before_create :generate_url 

    private 
    def generate_url 
     self.url = title.strip.downcase.gsub(/[^a-z0-9]+/,'-') 
    end 
end 

Контроллер не изменился.

+0

благодарит за информацию! – andkjaer