HTML::Pipeline::EmojiFilter::asset_root缺少上下文键



我使用Rails 5应用程序并添加html_pipeline gem与EmojiFilter扩展,以便我可以处理用户发送的文本并过滤表情符号。

我有以下内容:

def filtered_content
    pipeline = HTML::Pipeline.new [
     HTML::Pipeline::PlainTextInputFilter,
     HTML::Pipeline::MarkdownFilter,
     HTML::Pipeline::SanitizationFilter,
     HTML::Pipeline::AutolinkFilter,
     HTML::Pipeline::EmojiFilter
    ]
   pipeline.call(content)[:output].to_s
end

我按照通常的步骤添加了gemoji gem,这样我就可以使用EmojiFilter,但是当我将它添加到管道声明中并尝试使用管道时,我得到了错误:

Missing context keys for HTML::Pipeline::EmojiFilter: :asset_root

我在我的资产中添加了这个。rb初始化:

  Rails.application.config.assets.paths << Emoji.images_path
  Rails.application.config.assets.precompile << "emoji/**/*.png"

还运行了"rake emoji",但错误仍然存在。

我能解决这个问题吗?

谢谢!

我从html_pipeline合作者那里得到了反馈。基本上,解决这个问题需要做的是添加上下文变量asset_root来指示应该从哪里读取图像(本地文件夹,CDN url等)

所以我的问题的修改代码应该这样修改:

def filtered_content
    pipeline = HTML::Pipeline.new [
      HTML::Pipeline::PlainTextInputFilter,
      HTML::Pipeline::MarkdownFilter,
      HTML::Pipeline::SanitizationFilter,
      HTML::Pipeline::AutolinkFilter,
      HTML::Pipeline::EmojiFilter
    ], { asset_root: "the url of your assets" } # <------
    # E.g. GitHub uses this: "https://assets-cdn.github.com/images/icons/emoji/unicode"
    pipeline.call(content)[:output].to_s
end

相关内容

最新更新