我想我错过了某个地方。
我让渲染器使用原始文本区域(内容)工作了一段时间,现在已经为模型(正文)添加了一个新列。我添加了所有内容并且表单有效,视图显示了正文输入,但是markdown不会呈现。
所以这是我的应用程序助手:
def markdown(content)
@markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true, fenced_code_blocks: true)
@markdown.render(content)
end
def markdown(body)
@markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true, fenced_code_blocks: true)
@markdown.render(body)
end
def title(page_title)
content_for :title, page_title.to_s
end
我的节目观点:
=title @portfolio.title
.container.pushdown.img-responsive
.row
.col-md-2
%br
%p= link_to 'Back', portfolios_path
.col-md-8
%h2
= @portfolio.title
%p
=markdown(@portfolio.body).html_safe
%p
=markdown(@portfolio.content).html_safe
%br
%br
我收到以下错误:
wrong argument type nil (expected String)
答案 0 :(得分:1)
您的markdown
方法需要一个字符串。如果您使用nil
调用它,则会抛出此错误。
您可能希望将代码更改为此类代码以处理nil
值:
def markdown(string)
@markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true, fenced_code_blocks: true)
@markdown.render(string.to_s)
end
此外,您有两种相同的方法。您可以删除其中一个。
答案 1 :(得分:0)
错误可能来自
=title @portfolio.title
与降价渲染无关。调用该函数的预期签名是:
def title(page_title)
此外,+1有两个相同的方法(第一个只是被第二个覆盖。)