witam, wyszukuję wszystkie wątki w ten sposób
<% for thisday in Eventday.find(:all, :conditions => {:day => pars}, :include => :event, :order => ‘events.starttime ASC’).each %>
i najbardziej zastanawia mnie klauzura order => 'events.starttime ASC ’ wszystko jest niby idealnie jednak gdy wyświetlam dane zauważyłem
że nie są poselekcjonowane wg godziny
wyświetlam :
<%=h thisday.event.starttime.strftime("%H:%M") %>
otrzymuje
( w danym dniu )
<% for cośtam in cośtams %> albo <% cośtams.each do |costam| %> Według mnie. To po pierwsze, po drugie nie umieszczaj takich findów w widokach, bo mieszasz funkcjonalności, to powinno być w kontrolerze.
Hm… w dokumentacji finda nie widzę, żeby tam był parametr :include.
no jak masz jakies watpliwosci to irb i sprawdz zapytanie recznie, w logach bedziesz mial co z tego cuda twojego sie wygenerowalo za zapytanie
mozesz je tez w bazie danych zapodac i zobaczyc jak sie dane ukladaja
temat rozpoznany bład jest w kolumnie starttime która posiada datę ( ktróra jest niepoprawn) oraz czas ( który jak najbardziej jest prawidłowy)
czy jest możliwość aby zapytanie
<% for thisday in Eventday.find(:all, :conditions => {:day => pars}, :include => :event, :order => ‘events.starttime ASC’).each %>
ograniczyć do selekcji z kolumby ‘events.starttime’ tylko pod względem wpisanej tam godziny ??
mozesz zapytanie sql tak ulozyc by wyciagnac tylko godziny. Sql te zpotrafi formatowac daty/godziny. Nie wiem z jakies bazy korzystasz wiec nie pomoge.
I tak dalej. Mam Nadzieje ze mechanizm rozumiesz. Przy takim zapytaniu ja korzystam praktycznie zawsze z find_by_sql i pisze recznie sql no ale to zalezy jak znasz sie na sql. Ja lubie miec pelna kontrole nad nim.
problem rozwiązany zapewne spalicie mnie tutaj na stosie za takie rozwiązanie ale jak na razie na mój zasób wiedzy na więcej nie mogę sobie pozwolić:P
odpowiedz: select jest dobry
zmieniłem w widoku
<%= f.datetime_select (:starttime, :start_year => 2000, :default => { :month => 4, :day => 1, :year => 2000 }, :discard_year => ‘true’, :discard_month => ‘true’ ) %>
teraz nie ma problemów z wyszukiwaniem bo na stałe jest wpisanny miesiąc dzień i rok i układa prawidłowo po godzinach :)))
nie ma co oceniac i komentowac, kazdy zaczynal kiedys i teraz jak po latach odgrzebuje swoje stare projekty sprzed kilku lat to za glowe sie lapie i ze wstydu pali jak mogl takie rzeczy robic. Naturalny proces.
a tak poza tym nie bardzo juz kumam co chcesz osiagnac i jak to masz zbudowane. Jesli chcesz tylko godziny to po co typ datetime samo time bylo by ok, no i wtedy w formularzu:
mysql nazwa_bazy
ALTER TABLE nazwa ALTER COLUMN nazwa TYPE time;
i tyle pozniej tylko w aplikacji w db/migrate/ktorastam zmienic recznie datetime na time, no i chyba tez w db/schema
i tyle masz poprawione a nie takie kosmosy tworzysz. Moznesz tez dac
./script/generate migration
i w nowej migracji ta zmiane zapodac. No ale ja zawsze wole pierwszy sposob.
A jak dopiero tworzysz i nie masz tam danych to i bez 1 punktu da rade tylko dropnac ta tabele i poprawiona znowu zrobic na nowo i tyle