Андрес предлагает переопределить to_param для использования заголовка, но это неприемлемо, так как вам не нужны пробелы и т. Д. Вам нужна постоянная ссылка или слаг для модели, хранящейся в строковом поле под названием «слаг»пример ниже.Это создается, когда запись сохраняется, и впоследствии никогда не изменяется: это используется в качестве замены для идентификатора в URL.Слаг содержит только буквы, цифры и дефисы и может быть уникальным путем добавления цифр в конце.Затем вы изменяете to_param на использование slug, и вы обнаруживаете slug в своем контроллере.Например,
before_create :set_slug
def set_slug
slug = self.title.downcase.gsub(/[^a-z0-9]/,"-")
suffix = ""
while self.class.find_by_slug(slug)
slug.gsub!(/#{suffix}$/,(suffix == "" ? 1 : suffix+=1).to_s)
end
self.slug = slug
end
def to_param
self.slug
end
В вашем контроллере событий
before_filter :load_event, :except => [:index, :new]
...
protected
def load_event
@event = Event.find_by_slug(params[:id])
end