2009-10-01 3 views
3

Скажем, у меня есть это:жесткое кодирование маршрутов в Rails

<%= link_to "My Big Link", page_path(:id => 4) %> 

И в моем page.rb я хочу показать контенте, их Permalink поэтому я использую стандарт:

def to_param 
    "#{id}-#{title.parameterize}" 
end 

Теперь, когда Я нажимаю «Моя большая ссылка», это приводит меня к правильной странице, но URL-адрес в адресной строке не отображает желаемую постоянную ссылку. Вместо этого он просто показывает стандарт:

wwww.mysite.com/pages/4 

Это потому, что я жестко закодировал идентификатор в page_path? Он также не работает, если я использую прямой HTML как ..

<a href="/pages/4">My Big Link</a> 

Я был бы признателен, если кто-нибудь может проверить такое же поведение и дайте мне знать, если это намеренно или нет. Мне нужна способность к жесткому коду: идентификаторы, чтобы указать точные страницы ...

ответ

-1

UPDATE на мой вопрос ---------------------->

Спасибо всем за ответы. Это была одна ситуация. Мое решение было просто пойти с HTML:

<a href="/pages/4-great-title-here">My Big Link</a> 

который произвел желаемое:

wwww.mysite.com/pages/4-great-title-here 

Я не хочу перебрать объекты страницы и тратить на вызов к базе данных для этой одной ссылки. Тем не менее, большое спасибо за все ответы!

1

Это потому, что вы указываете идентификатор:

page_path(:id => 4) 

Вы можете указать путь, который вы хотите в этом методе:

page_path(:id => "#{id}-#{title.parameterize}") 

Где вы определили метод to_param? В модели?

+0

Привет, Тоби, да, это на странице. Я до сих пор неясно, почему указание id не будет принимать это: id и вызвать метод to_param в page.rb? – drpepper

+0

На самом деле я вижу, почему - я думаю, я больше ищу обходной путь :) – drpepper

5

Просто используйте page_path (страница). Я думаю, что помощники пути не имеют доступа к самой базе данных (что хорошо), но если они снабжаются объектом, и этот объект имеет метод to_param, этот метод используется для генерации идентификатора.

<%= link_to "My Big Link", page_path(page) %> 
Смежные вопросы