2017-06-12 78 views
1

渲染搭配修身/ Rails的降价:从我遇到了麻烦修身渲染我降价实例VAR

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

这只是呈现字符串

这是一个H1 H2 ## ### H3>这是一个报价* *你好再见foo

(其中包含在实际的字符串)无换行符或任何

我该如何正确渲染?谢谢!

回答

1

我放弃了使用markdown:slim,曾试过一切。

我结束了创建这个帮手,把它放在随便什么文件中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 

,然后在视图

= markdown @listing.job_description 

当然,您必须安装redcarpet宝石。

gem 'redcarpet' 
0

看起来您的降价内容不会在markdown:下缩进,因此不会被降价处理。

应该看起来更像是这样的:

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

更多信息请参见this section of the docs

+0

当我这样做,它只是在屏幕上打印'= @ listing.job_description' –

1

渲染减价出以这种方式的变量是不可能的,因为超薄首先渲染降价(或任何其他嵌入式引擎语言)和插到所述可变内容之后。

它是有道理的,因为Slim的嵌入式引擎标签旨在作为一种包含不同语言的联机方式,因此您可以在其中阅读它们。如果在模板中没有以字面形式包含降价,那么在将Markdown传递给Slim之前,使用嵌入式引擎完全没有优势(如HTML,并使用'=='阻止Slim进一步处理) 。

我也认为它是这样设置的,因为它旨在提供和简单的方法将文本插入到与其他所有内容相同的模板中的Markdown--它本身没有插值方法 - 。

帮手冰人建议是一个很好的方法来做到这一点。我可能会将其称为模板之外,但这是因为我个人偏好在模板内尽可能少地做。