Będę musiał trochę poeksperymentować, żeby to naprawić, ale są dwie podstawowe części rozwiązania.
1) Dodaj trasę. w config/routes, dodaj linię, która wysyła żądania do postaci baseurl/controller /: nazwa-dostawcy do akcji showummary, (lub może do nowej akcji, show_summary_by_vendor_name) [również, jeśli planowałeś użyć baseurl /: vendorname , to też jest w porządku). Dla wygody upewnij się, że parametr jest podobny do: nazwa-dostawcy, a nie wartość domyślna: id
2) Zapisz działanie kontrolera. W pliku kontrolera edytuj swoje działanie showummary, aby odróżnić na podstawie tego, czy jest on wywoływany z identyfikatorem, czy z nazwą sprzedawcy, lub po prostu wpisz nazwę show_summary_by_vendor_name. (w zależności od najlepszych praktyk i trasy, którą napisałeś w 1. Nie wiem od początku mojej głowy co jest lepsze) Możesz następnie wykonać @vendor = Vendors.find_by_name (parametry [: nazwa_sprzedawcy]) lub coś takiego, a następnie renderuj to w sposób, w jaki robisz to w regularnych showpointy.
3) Użyj tego jako linku. Po potwierdzeniu, że baza danych baseurl [/ controller?]/Vendor-name działa i pokazuje podsumowanie, upewnij się, że wszystkie łącza w Twojej aplikacji i gdziekolwiek indziej używają tego linku. Poza tym nie pamiętam, jak trudno jest zintegrować niestandardową trasę w link_to, ale myślę, że jest to wykonalne. Większość wyszukiwarek [google] opiera się głównie na linkach, więc dobry SEO będzie używał tych nazwanych linków, a nie tych ponumerowanych. Myślę. Nie wiem zbyt wiele o SEO.
Cześć, dzięki za to - co masz na myśli mówiąc "połknij wiele adresów URL, których nie chcesz"? oh, masz na myśli, że trasa zmieniłaby prawie wszystko, co nazywasz tym kontrolerem? Mam się dobrze z dostawcami/programem show/1-Acme ... jak to wpływa na SEO? – AFG
Tak, "/: id" pasowałoby do wielu rzeczy, więc musiałbyś mieć wiele nazwanych tras dla "/ about", "/ contact", itd. Jeśli chodzi o SEO, myślę, że prefiks liczby jest znikomy . –
W jaki sposób utworzyć nazwaną trasę dla dostawców/list, która odpowiadałaby akcji w pliku vendor_controller.rb nazywanej "listą"? Dzięki. W przeciwnym razie wygląda dobrze. – AFG