2016-07-26 5 views
0

Also, ich ein bisschen redundanten Code in einem meiner Ansichten haben:Rails if-Anweisung in der Javascript-Tag in 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' 
     }); 
    }); 

Grundsätzlich bin ich mit Datetime für einen meiner Felder, und Wenn das Modell einen Wert für dieses Feld hat, wird es angehängt. Es wäre sauberer, wenn ich so etwas tun könnte:

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

Irgendwelche Ideen?

Antwort

0

Warum nicht die Variable mit Ruby/HAML setzen und die Bedingung in JS behandeln?

: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

Wir können einen Ruby-Code einbetten den Zustand unless @event.start_time.nil?, zu überprüfen, so wird der Code sein:

: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}"); 
    } 
    });