2016-11-02 4 views
0

In meinem Formular habe ich zwei Datumsfelder, und :end_date, bezogen auf einen Job. Es gibt einen Monat und ein Jahr.date_select: Wie überschreibt man den Wert mit einer Checkbox?

Genau wie auf LinkedIn ist das letzte Jahr möglicherweise für Ihren aktuellen Job nicht relevant.

Daher suche ich nach der Art und Weise, die :end_date durch "present" zu ersetzen, wenn der Benutzer das Feld "aktuelle Position" ankreuzen.

Was ist der richtige Weg?

aktualisieren

Mein Code zur Zeit: <%= f.date_select :end_date, { discard_day: true } %>

+0

@Udaykumardas Wäre das nicht festgelegt nur das aktuelle Datum für gut? Die Sache ist, dass es in diesem Fall kein Enddatum gibt, da der Job nicht beendet wurde. Ich habe meinen Code aktualisiert, der ziemlich einfach ist. – DoeJ

Antwort

0

Ich würde nicht einen Wert gesetzt, Enddatum des Verwerfungs, ich present_job auf true aus der Checkbox gesetzt habe (hinzufügen, um dieses Attribut die jobs Tabelle). Dies würde das Enddatum ignorieren oder löschen.

before_validation :clear_end_date, :if => :present_job 

validate :end_date, :presence => true, :unless => present_job 

def clear_end_date 
    self.end_date = nil 
end 

Verwenden Sie dieses Kontrollkästchen auch, um das end_date im Formular visuell zu deaktivieren und zu löschen. Sie müssen lediglich ein Ereignis hinzufügen, um festzustellen, ob sich der Status ändert, und das Feld für das Enddatum aktualisieren.

$(".checkbox").change(function() { 
    if(this.checked) { 
     // Disable end_date select box and make other visual changes 
    } 
}); 

jQuery checkbox checked state changed event

+0

Es funktioniert, danke, dass Sie mir geholfen haben, die Logik zu verstehen. – DoeJ

Verwandte Themen