Жесткое кодирование маршрутов в Rails - PullRequest
3 голосов
/ 01 октября 2009

Допустим, у меня есть это:

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

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

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

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

wwww.mysite.com/pages/4 

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

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

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

Ответы [ 3 ]

5 голосов
/ 01 октября 2009

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

<%= link_to "My Big Link", page_path(page) %>
1 голос
/ 01 октября 2009

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

page_path(:id => 4)

Вы можете указать желаемый путь в этом методе:

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

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

0 голосов
/ 02 октября 2009

ОБНОВЛЕНИЕ НА МОЙ ВОПРОС ---------------------->

Спасибо всем за ответы. Это было что-то особенное. Моим решением было просто перейти с HTML:

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

Который дал желаемое:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...