У меня проблема с попыткой заставить link_to работать после изменения маршрутов в моем приложении.Это может быть простым, но я, честно говоря, не могу видеть, что просто ссылка на link_to с именем объекта не будет работать, как раньше, до изменения маршрута.
Справочная информация: я использую гем friendly_id (не уверен, что я до сих порнужно это после внесения изменений в URL вручную).Я также использую драгоценный камень Ancestory.
На передней панели приложения.У меня есть список ресурсов, который используется только для индексации и показа.Смотрите ниже маршруты, а также предыдущий рабочий маршрут.
# Front facing resources
scope "/:category_name/:category_id" do
resources :listings, only: [:show], path: '/:title'
end
resources :listings, only: [:index]
до (работает нормально)
# Front facing resources
resources :listings, only: [:index, :show]
resources :auctions, only: [:index, :show]
Я успешно сделал вывод своего URL с результатом:
listing GET /:category_name/:category_id/:title/:id(.:format) listings#show
результат:
http://localhost:3000/listings/helicopter/test-one/4
Это пока подойдет.Я все еще пытаюсь определить окончательный URL.Таким образом, я могу создать список и просмотреть его, вручную введя URL-адрес в браузер.
Ошибка возникает, когда я просматриваю индексную страницу списков, и у меня есть link_to
текущий код:
<%= link_to listing.title, listing %>
Ошибка:
No route matches {:action=>"show", :controller=>"listings"}, missing required keys: [:category_id, :category_name, :id, :title]
Как мне добавить эти обязательные ключи в помощник link_to?Я пробовал много способов, но не далеко.Я предположил, что изменение только маршрута показа не слишком запутало бы ни один из предыдущих методов контроллера и что список все равно будет найден по id.
Любое направление было бы замечательно.Бесконечно благодарен.
*** ОБНОВЛЕНИЕ ****
Хорошо, перед отправкой вышесказанного я посмотрел поближе и получил его, однако я спрашиваю, есть ли более чистый способ сделать это?Это выглядит не очень «рельсовым путем».Моя конечная цель - иметь длинную SEO-дружественную ссылку, которая содержит категорию и, возможно, подкатегории.
Рабочий код:
<%= link_to listing.title, listing_path(category_name: "listings", category_id: listing.category.name, title: listing.title.parameterize, id: listing.id) %>
Результат:
http://localhost:3000/listings/Aircraft/twin-piston-jet/1
Мысли, пожалуйста ???