2009-12-17 4 views
2

У меня есть модель под названием Project и я определил метод «to_param», как это:Rails дружественных URL

def to_param 
    permalink 
end 

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

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

Посмотрите, что, когда я иду в http://railscasts.com/episodes/63 на изменения URL в/63-имя

Любые предложения?

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

ответ

7

Похоже, Райан использует условное перенаправление на соответствующий эпизод_url. Исходный код приложения Railscasts находится на GitHub, поэтому вы можете see how he does it.

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

redirect_to @project, :status => 301 if params[:id] != @project.to_param? 
+0

спасибо !! Я не могу дать вам репутацию, но СПАСИБО! – Hock

4

Они, скорее всего, с помощью friendly_id камень или что-то подобное:

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

Важной частью является:

@post = Post.find(params[:id]) 
redirect_to @post, :status => 301 if @post.has_better_id? 
Смежные вопросы