Добавление заголовка в маршрут рельсов - PullRequest
1 голос
/ 09 марта 2010

У меня есть объекты List, которые отображаются следующим образом:

www.mysite.com / списки / 123

Где 123 - идентификатор списка. То, что я хотел бы сделать, это добавить заголовок списка URL-адрес, чтобы он был более информативным (для Google или любой другой). Поэтому я бы хотел, чтобы это выглядело так:

www.mysite.com / списки / 123 / титульный из-списка номер-123

Как вы добавите URL-адрес, подобный этому? Если вы просто введите: www.mysite.com/lists/123 без заголовка, должен ли он найти заголовок и затем перенаправить на новый маршрут?

Ответы [ 3 ]

6 голосов
/ 09 марта 2010

Если вы хотите, чтобы ваши вызовы находились в том виде, в каком они есть (по идентификатору), вы можете сделать то, что предложила mplacona:

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

При этом ваш find (params [: id]) будет работать, потому что он преобразует строку в целое число (может быть успешным, только если число находится в начале строки). Так что это на самом деле будет работать:

List.find("123-my-title")

и будет таким же, как

List.find(123)

Подробнее об этом и других способах достижения этой цели читайте здесь: http://gregmoreno.ca/how-to-create-google-friendly-urls-in-rails/

Параметризация автоматически преобразует строку в «симпатичный» URL. Подробнее здесь: http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001367

Если вам нужна дополнительная функциональность, я предлагаю friendly_id , а также.

2 голосов
/ 09 марта 2010

В этой статье говорится, что именно вам нужно для этого.

http://railscasts.com/episodes/63-model-name-in-url

UPDATE

Добавьте к вашей модели постоянную ссылку и сохраните ее следующим образом:

def to_param
  "#{permalink}-#{id}"
end

На вашем контроллере, вместо того, чтобы получать вещи по идентификатору, получите их через постоянную ссылку:

@product = Product.find_by_permalink(params[:id])

И это все, что вам нужно.

Снимок экрана объясняет все шаги, как это сделать.

1 голос
/ 09 марта 2010

Вы также можете взглянуть на дружественный идентификатор , если у вас настроение для гема / плагина.

...