2017-10-17 5 views
0

Ich habe die folgenden Zeilen in meiner haml-Datei.So fügen Sie Leerzeichen in haml hinzu

(Requested: 
          %strong<> 
           = comment.commentable.requested_check_in.present? ? comment.commentable.requested_check_in.strftime("%m/%d/%Y") : "" 
           ="-" 
           = comment.commentable.requested_check_out.present? ? comment.commentable.requested_check_out.strftime("%m/%d/%Y") : "" 
          , Actual: 
          %strong<> 
           = comment.commentable.actual_check_in.present? ? comment.commentable.actual_check_in.strftime("%m/%d/%Y") : "" 
           ="-" 
           = comment.commentable.actual_check_out.present? ? comment.commentable.actual_check_out.strftime("%m/%d/%Y") : "" 
          ). 

, was ich will, ist, dass ein weißer Raum zu haben, nachdem

(Requested: " " 

aber diese Linie nicht funktioniert.

+1

Wie sieht das generierte HTML aus und was ist Ihr erwartetes Ergebnis? – Stefan

Antwort

0

nachdem ich verschiedene Plattformen durchlaufen habe, fand ich endlich Lösungen, die den Code sehen.

(Requested:&nbsp 
          %strong<> 
           = comment.commentable.requested_check_in.present? ? comment.commentable.requested_check_in.strftime("%m/%d/%Y") : "" 
           &nbsp-&nbsp 
           = comment.commentable.requested_check_out.present? ? comment.commentable.requested_check_out.strftime("%m/%d/%Y") : "" 
          , Actual:&nbsp 
          %strong<> 
           = comment.commentable.actual_check_in.present? ? comment.commentable.actual_check_in.strftime("%m/%d/%Y") : "" 
           &nbsp-&nbsp 
           = comment.commentable.actual_check_out.present? ? comment.commentable.actual_check_out.strftime("%m/%d/%Y") : "" 
          ). 

können Sie Shortcode (& nbsp) verwenden, wohin Sie wollen Raum in haml

+0

Dies ist ein Hack. Es ist nicht der "richtige" Weg, es zu tun. Warte, ich gebe dir in einer Minute eine richtige Antwort ... –

1

&nbsp stands for non-breaking space.

Normalerweise schneidet HTML Leerzeichen in Ihrem Text ab. Wenn Sie 10 Leerzeichen schreiben, wird nur 1 angezeigt. &nbsp ist eine Möglichkeit, Force zusätzliche Leerzeichen zu erscheinen, aber es ist selten der "richtige" Weg, es zu tun.

Ein gültiger Anwendungsfall könnte lauten: Mr.&nbspUsman -die beiden Wörter in der gleichen Zeile erscheinen zu lassen.

Alles, was Sie hier tun müssen, ist, den Text in Anführungszeichen wickeln:

= '(Requested: ' 
%strong= comment.commentable.requested_check_in&.strftime("%m/%d/%Y") 
- if comment.commentable.requested_check_out 
    = ' - ' 
    %strong= comment.commentable.requested_check_out.strftime("%m/%d/%Y") 
= ')' 
= '(Actual: ' 
%strong= comment.commentable.actual_check_in&.strftime("%m/%d/%Y") 
- if comment.commentable.actual_check_out 
    = ' - ' 
    %strong= comment.commentable.actual_check_out.strftime("%m/%d/%Y") 
= ')' 

Dieser Code ist sehr chaotisch, aber. Es ist nicht ratsam, solch komplexe Logik in eine Ansicht zu bringen. Ich würde empfehlen, diese Logik in eine Hilfsmethode zu übertragen; vielleicht in Betracht ziehen, die Bibliothek draper zu verwenden? Ihre Refactoring Code anzeigen könnte am Ende so etwas wie folgt aussehen:

!= "(Requested: <strong>#{comment.commentable.requested_check_out_range}</strong>)" 
!= "(Actual: <strong>#{comment.commentable.actual_check_out_range}</strong>)" 

... Mit der bedingten Logik in ./app/decorators/*.rb bewegt.

Wenn Sie den Text mit multiple, nicht abgeschnittenen Leerzeichen formatieren müssen, sollten Sie stattdessen normalerweise white-space CSS property verwenden.

Verwandte Themen