2017-06-12 3 views
1

Je vais avoir du mal à obtenir Slim pour rendre mon démarquage:Rendu démarquage avec Slim/Rails d'une instance var

div.container 
    div.row 
     div.col-md-8.job_description 
      markdown: 
       = @listing.job_description 

Cela rend simplement la chaîne

C'est un h1 ## h2 ### h3> est une citation * bonjour * au revoir foo

Aucun saut de ligne ou quoi que ce soit (qui sont contenus dans la chaîne réelle)

Comment obtenir ce rendu correctement? Merci!

Répondre

1

J'ai abandonné l'utilisation markdown: en slim, avait tout essayé.

Je fini par créer cette aide, placez-le dans ne importe quel fichier dans app/helpers

def markdown(content) 
    return '' if content.blank? 
    markdown = Redcarpet::Markdown.new(Redcarpet::Render::XHTML, autolink: true, space_after_headers: true) 
    sanitize(markdown.render(content)).html_safe 
end 

Et puis dans une vue

= markdown @listing.job_description 

Vous aurez bien sûr installer la pierre précieuse redcarpet.

gem 'redcarpet' 
0

Il semblerait que votre contenu de démarques ne soit pas indenté sous markdown:, il ne sera donc pas traité par markdown.

Il devrait ressembler à ceci:

div.col-md-8.job_description 
    markdown: 
    = @listing.job_description 

Voir this section of the docs pour plus d'informations.

+0

Quand je fais cela, il imprime juste '= @ listing.job_description' sur l'écran –

1

Rendu Markdown sur une variable de cette manière est impossible, comme Slim rend d'abord le Markdown (ou toute autre langue du moteur embarqué) et seulement après que interpole le contenu variable.

Il est logique que cela fonctionne de la même façon que les balises intégrées du moteur de Slim sont conçues pour inclure différentes langues en ligne afin que vous puissiez les lire. Si la syntaxe n'est pas incluse dans le modèle, il n'y a aucun avantage à utiliser le moteur incorporé plutôt qu'à rendre le Markdown avant de le passer à Slim (en HTML, et en utilisant '==' pour éviter tout traitement ultérieur par Slim) .

Je pense aussi qu'il est configuré de cette manière car il est conçu pour fournir une méthode simple d'interpolation de texte dans Markdown - qui n'a pas lui-même de moyen d'interpolation - dans le même modèle que tout le reste.

L'aide Iceman suggère est une bonne façon de le faire. Je l'appellerais probablement hors du gabarit, mais c'est juste parce que c'est ma préférence personnelle de faire le moins possible dans le gabarit.