2016-11-02 30 views
0

在我的表格中,我有两个日期字段,:start_date:end_date,与工作相关。有一个月和一年。date_select:如何用复选框覆盖值?

就像在LinkedIn上一样,结束的一年可能与您目前的工作无关。

因此,当用户勾选“当前位置”框时,我正在寻找将:end_date替换为"present"的方式。

什么是正确的方法来做到这一点?

更新

我此刻代码: <%= f.date_select :end_date, { discard_day: true } %>

+0

@Udaykumardas那不是刚刚设置好当前的日期?事情就是在这种情况下没有结束日期,因为工作还没有结束。我更新了我的代码,这是相当基础的。 – DoeJ

回答

0

我不会设定一个值,丢弃的结束日期,你可以设置present_job为真从复选框(添加该属性jobs表)。这会忽略或清除结束日期。

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 

此外,使用此复选框在视觉上禁用并清除窗体中的end_date。你只需要添加一个事件来查看状态是否改变并更新结束日期字段。

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

jQuery checkbox checked state changed event

+0

它的工作原理,谢谢你帮助我得到这个逻辑。 – DoeJ