2010-11-10 19 views
5

Metoda date_select może ustawić tylko: start_year, ale chciałbym ustawić datę początkową (np. Datę 3 miesiące temu) (ale nie ma takich opcji).Szyny 3 - Czy mogę ustawić datę rozpoczęcia na metodę date_select?

, czy mogę ustawić datę rozpoczęcia na metodę date_select? lub, aby ustawić takie pole wyboru, należy użyć select_tag i options_for_select? lub, czy są jakieś rozwiązania?

Dzięki,

Odpowiedz

5

date_select pomocnik obsługuje tylko ustawienie start_year i end_year (czyli 2015-2020), a nie start_date i end_date (czyli 1 czerwca 2015 do 1 lipca, 2020). Pomocnik date_select jest bardzo prosty. Jeśli przyjrzysz się uważnie, zauważysz, że co miesiąc ma 31 dni.

Kilka obejścia są dostępne:

  1. Do walidacji po stronie serwera i obecnych błędów, jeśli daty są złożone, które są poza dopuszczalnym zakresem.
  2. Przełącz na używanie klienta JavaScript - takiego jak http://amsul.ca/pickadate.js/date/ - który pozwala ograniczyć początek i koniec (powinny również używać walidacji po stronie serwera).
+0

oh, widzę. pomyślę o sprawdzaniu poprawności po stronie serwera. dzięki za szczegółowe wyjaśnienie! – bekkou68

+0

@KevinSylvestre, możesz ustawić: start_year. Mam wiele miejsc w moim kodzie i to działa. – Jay

+0

@Jay Tak, możesz. Pierwotne pytanie nawet to stwierdza. Moja odpowiedź brzmi, że nie można podać początku ** daty ** (jak w przypadku od 2 maja 2010 r.) Bez używania JavaScript, a nie z domyślną metodą date_select. –

8

Jest to możliwe ... np.

: start_year - Ustaw rok rozpoczęcia dla roku wybierz. Wartością domyślną jest Time.now.year - 5

patrz this resource.