2016-04-16 6 views
2

Ich habe ein Formular, das ich mit Simple_form gemacht habe, ist eines der Felder in der Form ein Datetime. Ich möchte es einschränken, so dass Benutzer nur Daten auswählen können, die nach dem Datetime ab sofort sind, damit sie Datensätze für die Vergangenheit nicht erstellen können.Rails Formular nur zeigen zukünftige Daten in Datetime Wählen Sie Feld

Ich habe experimentiert, dies mit Validierungen zu tun, aber ich möchte nur die Formularoptionen stattdessen beschränken. Ich habe den Stundenbereich auf das beschränkt, was ich wollte, kann aber tagelang nichts Ähnliches finden.

Das Formular für die Veranstaltung

<%= simple_form_for @event do |f| %> 

    <%-# Form input fields -%> 
    <%= f.input :name, label: 'Title' %> 
    <%= f.input :event_date, minute_step: 15, start_hour: 7, end_hour: 21 %> 
    <%= f.input :body %> 
    <%= f.submit 'Submit' , :class => "btn btn-primary" %> 

<% end %> 
+0

Verwenden Sie 'datetime_select' für Ihre Eingabe? –

+0

Ich verwende derzeit f.input, das von der Simple_Form bereitgestellt wird, aber bevor ich die datetime_select-Eingabe verwendete. – Yoklan

+0

Und ist die Front-End-Anforderung, dass Sie eine Auswahl für Tag, Monat, Jahr, Stunde, Minute, z. Mit i3 oder geht es Ihnen nur mit einem Dropdown? –

Antwort

3

Für Rails 4:

Für 4 Schienen, die gibt es date_field Helfer, die beide min und max Werte annehmen kann.

Sie können damit den gewünschten Wertebereich einstellen. so, haben Sie so etwas wie:

<%= f.date_field : event_date, min: Date.today %> 

Sie weitere Informationen zu diesem von the documentation here

Alte Antwort bekommen:

Sie die :start_year Option angeben können, wie auf the documentation hier gesehen:

: start_year - Legen Sie das Startjahr für das Jahr fest. Der Standardwert ist Date.today.year - 5, wenn Sie einen neuen Datensatz erstellen. Während der Bearbeitung vorhandenen Datensatz,: start_year standardmäßig das aktuelle ausgewählte Jahr minus 5.

Also, in diesem Fall werden das tun, was Sie müssen, ist die :start_year als das aktuelle Jahr angeben.

Hoffe das beantwortet Ihre Frage.

+0

Danke für die Antwort, was ich suche für mehr ist wie eine start_day Option, aber soweit ich weiß, gibt es das nicht? – Yoklan

+0

Um dies zu tun, sollten Sie in Erwägung ziehen, eine der JavaScript-Bibliotheken zu verwenden, um den unerwünschten Datumsbereich zu deaktivieren ... z. JQuery UI oder sogar Bootstrap. –

+0

Ich konnte keinen Weg finden, dies zu tun, ohne einen Datepicker (von Bootstrap oder Jquery) zu verwenden, der nicht funktionieren würde, da ich ein Datetime-Feld habe? – Yoklan