Mam artykuł i do niego komentarze (articles/show.html.erb). Komentarze umieszczam bezpośredno pod artykułem z formularzem dodawania nowych. Wykonując akcję stworzenia nowego komentarza przechodzę do kontrolera komentarzy i akcji create. Podczas prawidłowego dodania komentrza przekierowuje na szablon “articles/show”.
Proces dodawania przebiega prawidłowo.
Problem pojawia się gdy dane nie zostaną zwalidowane prawidłowo. Stosuje wtedy renderowanie “articles/show” (nie przekierowanie) żeby wyświetlić błędy walidacji. Znajduje się wtedy na stronie /articles/3, ale adres url przeglądarki to /articles/3/comments. Jak po nieprawidłowym zwalidowaniu danych komentarza znależć się na stronie /articles/3 z takim samym adresem url?
Nie wiem czy zostałem dobrze zrozumiany. Nie było problemów z tworzeniem ani z dodawaniem nowych komentarzy.
Skoro mam się tym urlem nie przejmować to problem robi się prostszy. Sprowadza się do przekierowania z akcji index kontrolera komentarzy do show konkretnego artykułu. Tylko, że mam jeszcze na stronie paginacje komentarzy i chciałbym przejść na konkretny “page”.
Podsumowując: Po “błędnej walidacji” komentarzy znajduje się na stronie /article/3 w adresie mam /article/3/comments. Używając teraz np. przycisku Next znajduje się na stronie /article/3/comments?page=2 a chciałbym się znajdować na stronie /article/3?page=2.
Czy mogę w jakiś prosty sposób przekazać parametr “page” do akcji show kontrolera artykułów?
Użyj do tego celu ukrytego input w formularzu komentarza. Niestety będziesz musiał z palca wstawiać tam zawartość w każdym miejscu gdzie jest wyświetlany.