Trudno mi dodawać parametry zapytania do link_to UrlHelper. Mam na przykład widok indeksu, który zawiera elementy interfejsu użytkownika do sortowania, filtrowania i paginacji (przez will_paginate). Wtyczka will_paginate poprawnie zarządza trwałością parametrów zapytania w obrębie strony.
Czy istnieje automatyczny mechanizm dodawania parametrów zapytania do nazwanej trasy, czy muszę to robić ręcznie? Wiele badań nad tym z pozoru prostym konstruktem pozostawiło mnie bez pojęcia.
Edytować
Niektóre wyzwania:
Jeśli mam dwa parametry zapytania, wiadro i sortowanie, w jaki sposób ustawić konkretną wartość na jeden z nich w link_to, zachowując bieżącą wartość drugiego? Na przykład:
<%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
Jeśli mam wiele parametrów zapytania, wiadra i sortowania oraz wielkości strony i chcę ustawić wartość na jeden z nich, czy istnieje sposób „automatycznego” włączenia nazw i wartości pozostałych parametrów? Na przykład:
<%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
Wtyczka will_paginate automatycznie zarządza zmienną strony i innymi zmiennymi zapytania. Wygląda na to, że nie ma automatycznego elementu interfejsu użytkownika do zarządzania rozmiarem strony. Chociaż widziałem kod do tworzenia listy wybranych rozmiarów stron, wolę mieć do tego elementy A (takie jak SO). Część tego wyzwania jest związana z nr 2, część dotyczy ukrywania / pokazywania tego elementu interfejsu użytkownika na podstawie istnienia / nieistnienia rekordów. Mówiąc inaczej, chcę dołączyć linki o rozmiarze strony tylko wtedy, gdy istnieją rekordy do strony. Ponadto wolę automatycznie dołączać inne zmienne QS (tj. Stronę, segment, sortowanie), zamiast umieszczać je według nazwy w link_to.
źródło
Odpowiedzi:
Dokumenty API na link_to pokazują kilka przykładów dodawania kwerendy do tras nazwanych i oldstyle. Czy to jest to, czego chcesz?
link_to
może również tworzyć linki z kotwicami lub ciągami zapytań:źródło
Jeśli chcesz szybkiego i brudnego sposobu i nie martw się atakiem XSS, użyj,
params.merge
aby zachować poprzednie parametry. na przykładpatrz: https://stackoverflow.com/a/4174493/445908
W przeciwnym razie sprawdź tę odpowiedź: params.merge i skrypty między witrynami
źródło
Jeśli chcesz zachować istniejące parametry i nie narażać się na ataki XSS, wyczyść skrót parametrów, pozostawiając tylko parametry, które może wysyłać Twoja aplikacja:
Jeśli używasz go w wielu miejscach, wyczyść parametry w kontrolerze:
źródło
Jeśli chcesz przekazać blok, powiedzmy, dla przycisku glifikonu, jak poniżej:
Następnie przekazywanie parametrów querystring można osiągnąć poprzez:
źródło