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