potrzebuje zrobić skrypt, który wyciągnie wybrany rekord z bazy danych przy uruchomieniu strony index, ale wyłącznie dla zalogowanych użytkowników.
Wybrany rekord ma się pojawić w komunikacie na stronie index, z chwilą kiedy zostanie załadowana (ale tylko zalogowani użytkownicy -> gem “devise”). Decise już funkcjonuje w aplikacji, pytanie jak to zrobić ?
Stworzyłem plik w /assets/javascripts/index.js.coffee i w nim chciałem wywołać “alert”.
Przekaz do widoku zmienna ktora wskazuje czy ktos jest zalogowany czy tez nie @is_signed_in = user_signed_in?
Nastenie wygeneruj warunkowo odpowiedni kod javascript. Ew. mozesz zrobic JS ktory za pomoca AJAX-a bedzie sprawdzal czy ktos jest zalogowany i odpowiednio obslugiwal cala sytuacje.
Nie wiem jaką masz architekturę w aplikacji, ale rozważmy taką możliwość.
Sugerowałbym przekazywanie informacji o tym czy user jest zalogowany poprzez podanie tej informacji do
JavaScriptu.
Na przykład w ten sposób że dla każdej strony w aplikacji będziesz ładował coś w rodzaju configa/helpera. Przykładowo, dla każdej strony mógłby się uruchomić taki kod (choćby w Twoim pliku layout/application) :coffeescript
Wtedy każda strona miałaby gwarancję że taki obiekt jak window.App.PageConfiguration istnieje i bezpiecznie może z niej pobrać informację. Oczywiście nie namawiam do tego żeby w aplikacji w dowolnym miejscu w kodzie sięgać bezpośrednio do window.App.PageConfiguration bo w dłuższym czasie bardzo źle wpłynie to na utrzymanie kodu. Chodzi mi tylko o ideę.
Odradzałbym wszelkie dodatkowe odpytywanie serwera poprzez zapytanie AJAX-owe czy user jest zalogowany. Choćby ze względu na kwestie performance-u.