2016-07-26 66 views
0
的Javascript代码声明

所以,我有一点点多余的代码在我的意见之一:的Rails在HAML

- unless @event.start_time.nil? 
    :javascript 
    $(function() { 
     $('#datetimepicker1').datetimepicker({ 
     format: 'dddd, MMMM Do, YYYY, h:mm a' 
     }); 
     $('#datetimepicker1').data("DateTimePicker").date("#{@event.datepicker}"); 
    }); 
- else 
    :javascript 
    $(function() { 
     $('#datetimepicker1').datetimepicker({ 
     format: 'dddd, MMMM Do, YYYY, h:mm a' 
     }); 
    }); 

基本上,我使用的DateTimePicker我的领域之一,如果模型具有该字段的值,它将被追加。如果我能做这样的事情会更清洁:

:javascript 
    $(function() { 
    $('#datetimepicker1').datetimepicker({ 
     format: 'dddd, MMMM Do, YYYY, h:mm a' 
    }); 
    - unless @event.start_time.nil? 
     $('#datetimepicker1').data("DateTimePicker").date("#{@event.datepicker}"); 
    }); 

任何想法?

回答

0

为什么不使用Ruby/HAML设置变量并在JS中处理条件?

:javascript 

    $(function() { 

    $('#datetimepicker1').datetimepicker({ 
     format: 'dddd, MMMM Do, YYYY, h:mm a' 
    }); 

    var event_start_time_present = #{@event.start_time.present?}; 

    if (event_start_time_present) { 
     $('#datetimepicker1').data("DateTimePicker").date("#{@event.datepicker}"); 
    } 

    }); 
0

我们可以嵌入Ruby代码来检查条件unless @event.start_time.nil?,因此代码将是:

:javascript 
    $(function() { 
    $('#datetimepicker1').datetimepicker({ 
     format: 'dddd, MMMM Do, YYYY, h:mm a' 
    }); 
    var validStartTime = "#{@event.start_time.present?}"; 
    if (validStartTime === 'true') { 
     $('#datetimepicker1').data("DateTimePicker").date("#{@event.datepicker}"); 
    } 
    });