红毯降价渲染两个不同的文本区域



我想我错过了一些东西。

我让渲染器在原始文本区域(内容)上工作了一段时间,现在向模型(主体)添加了一个新列。我已经添加了一切和形式的作品,视图显示身体的输入,但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)

另外,如果有两个相同的方法(第一个方法被第二个方法覆盖)

相关内容

  • 没有找到相关文章

最新更新