Как переписать URL на основе заголовка? - PullRequest
2 голосов
/ 11 декабря 2010

Это довольно открытый вопрос, и я просто ищу наилучший возможный путь.

Пользователи могут публиковать ссылки с заголовками. И я хочу, чтобы мои URL в целях SEO отображали эти заголовки. Во многом так же, как я считаю, работает stackoverflow.

Так что если заголовок "Мой foobar только что разобрался с моей кошкой"

Я хотел бы, чтобы URL был: www.website.com/posts/My-foobar-just-made-out-with-my-cat

Есть идеи?

Большое спасибо заранее !!

Ответы [ 2 ]

2 голосов
/ 11 декабря 2010

Есть действительно потрясающий плагин, FriendlyId , который будет обрабатывать все это для вас. Множество действительно умных функций, включая области действия и обработку перенаправлений 301 при смене названия. Это отличается от stackoverflow и метода Брайана тем, что идентификатор не используется в URL.

2 голосов
/ 11 декабря 2010

Я использовал это в старом приложении Rails 2.x. Там может быть лучший подход к очистке заголовка ...

(идет в вашей модели)

def to_param
  seo_uri
end

def seo_uri
  "#{self.id}-#{self.title.gsub(/[^a-z0-9]+/i, '-').gsub(/-{2}/, '-').gsub(/-$/, '')}"
end

Надеюсь, это поможет!

UPDATE

Комментарии к этому ответу указывают, что для пользователей Rails 3 доступен новый метод: #parameterize. Документ Rails API для этого метода показывает, как его следует использовать (cut-n-paste):

class Person
  def to_param
    "#{id}-#{name.parameterize}"
  end
end

@person = Person.find(1)
# => #<Person id: 1, name: "Donald E. Knuth">

<%= link_to(@person.name, person_path %>
# => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
...