2016-08-22 4 views
0

私はRails 5アプリケーションを使用しており、ユーザが送信したテキストを処理して絵文字をフィルタリングできるようにhtml_pipeline gemEmojiFilter extensionを追加しています。私は、次のしているHTML :: Pipeline :: EmojiFilter :: asset_rootのコンテキストキーがありません

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 

を私はEmojiFilterを使用できるようにgemoji宝石を追加する通常の手順に従ったが、私は、パイプラインの宣言に追加し、私が手にパイプラインを使用しようとすると、エラー:

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"を実行しましたが、エラーはまだあります。

私はこれを解決できますか?

ありがとうございます!

答えて

1

Ok I 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 
関連する問題