Ruby on rails 从实例var使用Slim/Rails呈现标记

Ruby on rails 从实例var使用Slim/Rails呈现标记,ruby-on-rails,markdown,slim-lang,Ruby On Rails,Markdown,Slim Lang,我很难变苗条来进行降价: div.container div.row div.col-md-8.job_description markdown: = @listing.job_description 这只是渲染字符串 这是h1###h2####h3>这是一段引语*你好*再见 没有换行符或任何东西(包含在实际字符串中) 如何使其正确渲染?谢谢 看起来您的标记内容没有缩进到标记:下,因此它不会被标记处理 它应该更像

我很难变苗条来进行降价:

div.container
    div.row
        div.col-md-8.job_description
            markdown: 
                = @listing.job_description
这只是渲染字符串

这是h1###h2####h3>这是一段引语*你好*再见 没有换行符或任何东西(包含在实际字符串中)


如何使其正确渲染?谢谢

看起来您的标记内容没有缩进到
标记:
下,因此它不会被标记处理

它应该更像这样:

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

有关更多信息,请参阅。

我放弃了在
slim
中使用
markdown:
,尝试了所有方法

我最终创建了这个助手,将它放在
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
当然,您必须安装
红地毯
gem

gem 'redcarpet'

以这种方式呈现变量的标记是不可能的,因为Slim首先呈现标记(或任何其他嵌入式引擎语言),然后才插值变量内容

这样做是有道理的,因为Slim的嵌入式引擎标签是一种在线包含不同语言的方式,因此您可以在那里阅读它们。如果标记没有包含在模板中的文本形式中,那么使用嵌入式引擎与在将标记传递给Slim(作为HTML,并使用“==”阻止Slim进一步处理)之前简单地呈现标记相比没有任何优势

我还认为,它是这样设置的,因为它的目的是提供一种简单的方法,将文本插入到标记中,而标记本身没有插入的方法,在与其他所有内容相同的模板中


助手Iceman建议这是一个很好的方法。我可能会在模板外调用它,但这只是因为我个人喜欢在模板内做尽可能少的事情。

当我这样做时,它只会在屏幕上打印
=@listing.job_description