Rails Friendly URLs - PullRequest
       11

Rails Friendly URLs

2 голосов
/ 17 декабря 2009

У меня есть модель с именем Project, и я определил метод to_param следующим образом:

def to_param
  permalink
end

Я использую этот постоянный плагин github.com/febuiles/make_permalink, поэтому, когда я вызываю p.permalink, он генерирует id-имя.

Проблема в том, что когда я набираю TYPE / projects / 1 в моем веб-браузере, URL-адрес не меняется на / projects / 1-name. Как мне этого добиться?

Посмотрите, когда я перехожу на http://railscasts.com/episodes/63, URL меняется на / 63-name

Есть предложения?

Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 17 декабря 2009

Похоже, что Райан использует условный редирект на правильный episode_url.Исходный код приложения Railscasts находится на GitHub, поэтому вы можете посмотреть, как он это делает .

Аналогично, как предлагает Дрю, в вашем случае это должно работать нормально.

redirect_to @project, :status => 301 if params[:id] != @project.to_param?
4 голосов
/ 17 декабря 2009

Скорее всего, они используют гем friendly_id или что-то подобное:

http://github.com/norman/friendly_id/

Важная часть:

@post = Post.find(params[:id])
redirect_to @post, :status => 301 if @post.has_better_id?
...