Вопрос
Как я могу заменить «» и «_» с «-» в моем контроллере при создании нового поста?
У меня есть следующие поля формы: Заголовок URL Content
Я хочу выполнить GSUB на поле URL.
Спасибо...
Решение
Если вы пытаетесь пролить заголовок, то вы можете найти дружелюбное использование Norman:
http://github.com/norman/friendly_id
Для вас позаботится о создании постоянных ссылок для вас, поэтому вам не нужно беспокоиться о дублировании или генерации URL в вашем приложении. Это также интегрируется с ActiveRecord, чтобы переопределить методы поиска.
Другие советы
Помните, что избавление от космоса и «_» от 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
Контроллер без изменений.
title.gsub ("" "," - "). Gsub (" _ "," - ")
title.gsub(/[\s_]+/, '-').strip