HTML::Pipeline::EmojiFilter 缺少上下文键::asset_root
Missing context keys for HTML::Pipeline::EmojiFilter: :asset_root
我正在使用 Rails 5 应用程序并添加 html_pipeline gem with the EmojiFilter extension 以便我可以处理用户发送的文本并过滤表情符号。
我有以下内容:
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
我在 assets.rb 初始值设定项中添加了这个:
Rails.application.config.assets.paths << Emoji.images_path
Rails.application.config.assets.precompile << "emoji/**/*.png"
还有运行 "rake emoji" 但是错误仍然存在。
我有什么办法可以解决这个问题吗?
谢谢!
好的,我 got feedback 来自 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
我正在使用 Rails 5 应用程序并添加 html_pipeline gem with the EmojiFilter extension 以便我可以处理用户发送的文本并过滤表情符号。
我有以下内容:
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
我在 assets.rb 初始值设定项中添加了这个:
Rails.application.config.assets.paths << Emoji.images_path
Rails.application.config.assets.precompile << "emoji/**/*.png"
还有运行 "rake emoji" 但是错误仍然存在。
我有什么办法可以解决这个问题吗?
谢谢!
好的,我 got feedback 来自 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