Frage Komma getrennt in einer Zeile in HAML


Mit HAML möchte ich Links in einer einzelnen Zeile mit Kommas dazwischen haben. Wie so,

Check me out on GitHub, Twitter, Coderwall and LinkedIn.

Folgendes habe ich:

%footer
  Check me out on
  %a{:href => url('http://github.com/bostonaholic')} Github
  ,
  %a{:href => url('http://www.twitter.com/bostonaholic')} Twitter
  ,
  %a{:href => url('http://coderwall.com/bostonaholic')} Coderwall
  and
  %a{:href => url('http://www.linkedin.com/in/mboston')} LinkedIn
  \.

Aber das kommt so heraus:

Check me out on GitHub , Twitter , Coderwall and LinkedIn .

Wie behebe ich das Problem, so dass Kommas und Punkt an den richtigen Stellen stehen?

Vielen Dank.


5
2017-11-04 04:13


Ursprung


Antworten:


HAML hat diesen Fall mit der succeed Helfer. Dokumente hier: http://haml.info/docs/yardoc/Haml/Helpers.html#succeed-instance_method

Dieser HAML

click
= succeed '.' do
  %a{:href=>"thing"} here

produziert

click
<a href='thing'>here</a>.

5
2018-03-12 14:32



Dies ist ein großes und langjähriges Problem in HAML. Ich habe das persönlich auf zwei verschiedene Arten gelöst.

1) Ich lege den gewünschten Text in Array-Elemente und benutze a

join(', ')

Aber das ist ein ziemlich beschissener Weg, Dinge zu tun.

2) Die HAML einzige "Lösung" liegt im speziellen> Zeichen. Das Zeichen> löscht Leerzeichen im Ausgabe-HTML, so dass KEINE oder KEINE Leerzeichen vor oder nach der Ausgabe dieses Tags vorhanden sind. 

Das ist das Beste, was ich mir ausgedacht habe, und ich verliere nachts den Schlaf wegen seiner schrecklichen Häßlichkeit.

  %a{:href => 'here'} Github
  %span> ,&nbsp;
  %a{:href => 'there'} Twitter

Hinweise zu dieser letzten Technik.

ein. Wenn Sie das & nbsp; Sie erhalten keinen Speicherplatz, auch wenn Ihr Quellcode aktiviert ist. Die Verwendung von Anführungszeichen (% span> # {","}) und eines Leerzeichens funktioniert nicht, da HAML anscheinend die Ausgabe abschneidet.

b. Sie müssen ein Tag verwenden, weil die Verwendung von> funktioniert nur nach einem Tag, soweit ich das beurteilen kann. Mit => wird leider nicht funktionieren. Dies wäre mein empfohlener Weg, aber es würde den letzten Raum, der sowieso verloren geht, nicht lösen.

3) In meinen Schienenprojekten verwende ich die folgende Kombination von Teilern und Helfern:

teilweise: _haml_comma.html.haml

%span> ,&nbsp;

helfer.rb

  def comma
    render :partial => "shared/haml_comma"
  end

.haml-Datei:

  %a{:href => 'here'} Github
  = comma
  %a{:href => 'there'} Twitter

5
2017-08-01 01:58



Mit dem haml 'succee'-Helfer (danke @josal), hier ist ein sauberer, einfacher Weg, es zu tun:

%footer
  Check me out on
  = succeed ',' do
    %a{:href => url('http://github.com/bostonaholic')} Github
  = succeed ',' do
    %a{:href => url('http://www.twitter.com/bostonaholic')} Twitter
  = succeed 'and' do
    %a{:href => url('http://coderwall.com/bostonaholic')} Coderwall
  = succeed '.' do
    %a{:href => url('http://www.linkedin.com/in/mboston')} LinkedIn

Ich finde das einzige Mal, dass ich das brauche, wenn ich mit Links arbeite, aber es ist ein gutes Werkzeug, um es in deinem Hamel-Gürtel zu haben.


1
2018-01-12 15:58