我想我错过了一些东西。
我让渲染器在原始文本区域(内容)上工作了一段时间,现在向模型(主体)添加了一个新列。我已经添加了一切和形式的作品,视图显示身体的输入,但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
And my show view:
=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)
您的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
而且你有两个相同的方法。您可以删除其中一个。
错误可能来自
=title @portfolio.title
与降价渲染无关。调用函数的期望签名是:
def title(page_title)
另外,如果有两个相同的方法(第一个方法被第二个方法覆盖)