Попытка добавить: id в конец параметра в приложении Rails - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь изменить свой параметр URL в моем приложении.В настоящее время я использую friendly_id, чтобы URL включал заголовок вместо идентификатора.Однако я хотел бы добавить идентификатор после заголовка в URL, если это возможно.

пример:

текущий: app.com/categories/aircraft/listings/listing-title/

обязательный: app.com/categories/aircraft/listings/listing-title / list-id

Вот мои вложенные маршруты прямо сейчас

resources :categories do 
    resources :listings, only: [:index, :show]
end 

В соответствии с документацией я могу переопределить именованные помощники и изменить пути, но я могу только перезаписать часть списковURL, а не просто добавление: id в конец параметра, чтобы он оставался уникальным, если есть два списка с одинаковым заголовком.

https://guides.rubyonrails.org/routing.html#overriding-the-named-helpers

Я думаю, что friendly_id добавляет случайные уникальные символы, чтобы остановить повторяющиеся URL-адреса, уродливо, поэтому я думаю об этом по-другому.

Добавление приведенного ниже маршрута может отчасти заставить его.Но есть ли способ добавить маршрут в блок «делать ресурсы» только для страницы показа, не затрагивая ссылки кнопок уже на странице?

get 'categories/:catgeory_id/listings/:id/:aircraft_id', to: 'listings#show'    

РЕДАКТИРОВАНИЕ:

Я воспользовался советом по использованию slug_candidates

  def slug_candidates
    [
      :title,
      [:title, self.id]
    ]
  end

Я также попробовал его, используя просто: id.

Я получаю URL-адреса с заголовком / UUID вместо заголовка / перечисление_id, судя по всему.Любая идея, это связано с миграцией, имеющей уникальное поле в начальной настройке гема friendly_id?

1 Ответ

0 голосов
/ 26 марта 2019

Ваше решение как бы побеждает цель дружественных идентификаторов (без необходимости использовать идентификаторы в URL). Попробуйте использовать candidates вместо этого. См .: http://norman.github.io/friendly_id/file.Guide.html#Candidates

def slug_candidates
  [
    :title,
    [:title, :id]
  ]
end

Это будет использовать title-id вместо title , только если title повторяется - не всегда как ваше решение.

...