Live clock w Rails

Cześć.

Jestem świeżak jeżeli chodzi o Railsy i przygotowuję się troszkę do praktyk. Mam za zadanie wyświetlić prymitywny zegar (wyświetlający godzinę wejścia na stronę). Chciałem jednak to troszkę rozszerzyć i zrobić tak by czas cały czas się mierzył. Czy może ktoś mi podpowiedzieć jak takie coś prostego zrobić? :disappointed: W internecie widziałem sposób z partialem i JS ale jakoś go nie złapałem - chyba chodzi o ciągłe odświeżanie tego partiala.

Dzięki. :slight_smile:

@TomKo1 dobrze, że piszesz że jesteś świeżakiem i jakie masz cele.
Co do zadania to musisz wykorzystać klasę Time np:

@time = Time.new

wywołać powyższe w kontrolerze a @time wyświetlić w widoku.

Co do roszerzenia o mierzenie czasu. To chyba chodzi Ci o typowy zegar odmierzający czas. Ale to już w JavaScript. Tu masz przykład:
https://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock

Podstawowe pytanie jest takie, czy zegar powinien pokazywac czas wg. czasu na komputerze uzytkownika (tj. przegladarki), czy tez czas na serwerze (tam gdzie chodza Railsy).

Pierwsza opcja oznacza, ze mozna to zrobic w czystym javascript, jak pokazuje @RORMaster. Ale moim zdaniem ciekawsze byloby zrobienie tego zegara w oparciu o czas na serwerze.

A do tego mozesz uzyc co najmniej 3ch podejsc:

  1. wolac kontroler zwracajacy czas i odswiezac to AJAX-em np. co 20 sekund, pomiedzy ‘wypelniajac’ czas Intervalem javascriptowym,
  2. to samo, ale opakowac ten ‘zegarek’ jako komponent React, co ma o tyle sens, ze Rails 5.x ma fajna integracje poprzez Webpackera - https://github.com/rails/webpacker#react
  3. uzyc ActionCable - http://guides.rubyonrails.org/action_cable_overview.html

Innymi slowy, nawet najprosciej wygladajacy problem mozna troche skomplikowac i zaatakowac z roznych stron :slight_smile:

@mark, @TomKo1 napisał że jest świeżakiem dlatego na początek zaproponowałem mu wywołać w kontrolerze:

@time = Time.new