Wpis z mikrobloga

Mam problem z routingiem i wujek G nie jest w stanie mi pomóc :/

Powiedzmy, że mam dwa zasoby: Users i Articles. Articles stanowią podzasób Users.
Chcę żeby ścieżka /home wyświetlała wszystkie artykuły użytkownika, który jest w danym momencie zalogowany. Próbowałem różnych kombinacji, ale za każdym razem problemem jest brak id użytkownika w ścieżce. Nie mam już pomysłu na to jak skonstruować route żeby /home korzystał z podzasobu należącego do Users. Oczywiście mógłbym umieścić get 'home' => ... wewnątrz zasobu Users, ale wtedy będę miał ścieżkę /users/:id/home, a mi zależy na samym /home.

Jak żyć? ( ͡° ʖ̯ ͡°)

#rubyonrails #rails #ruby
  • 4
@WaveCreator:

wszystkie artykuły użytkownika, który jest w danym momencie zalogowany

a więc wszystkie artykuły currentuser (zakładam, że masz taki obiekt)?

W routes get '/home' => 'kontroler#user
articles'. W metodzie userarticles:

@articles = current
user.articles.

Na górze tego kontrolera dorzucasz:

beforeaction :authenticateuser!, only: :user_articles - dzięki temu masz pewność, że osoba która widzi ten widok / dotyka tej metody jest zalogowana.

Nie wiem czy dobrze zrozumiałem, no i
@WaveCreator a co mają routsy do tego co wyświetlasz na danej stronie? Route robisz sobie do miejsca gdzie chcesz (czy to home, czy to dashboard), a w nim wyświetlasz arykułu dostępne dla aktualnie zalogowanego użytkownika.
@marahin: Głupio mi teraz. Okazało się, że po stronie routingu miałem wszystko ok, tylko zapomniałem dodać current_user'a jako argument do ścieżek w widoku. A zapomniałem go dodać, ponieważ gdy wyświetlałem tą stronę za pomocą ścieżki **/users/:user_id/articles/today** to nie było takiej potrzeby, ponieważ działo się to automagicznie dzięki zagnieżdżeniu articles w zasobie users.

zasadniczo, kurka, dawej kod przy takich pytaniach. prosta sprawa jest, a można byłoby w giście najważniejsze modele i kontrolery