非常に単純なWYSIWYG(太字/下線/箇条書きの点)でテキスト形式を使用できる形式のtext_areaフィールドがあります。これは、ユーザーの記述プロファイルに一貫した書式設定を行うことを目的としていました。text_areaフィールドフォームにコピー/ペーストを許可しますが、書式設定を削除します
<%= l.text_area :access, value: "#{t('.access_placeholder_html')}" %>
しかし、一部のユーザーは通常、自分のウェブサイトから直接コピー/貼り付けによってtext_areaに書き込んでいます。そして、彼らの特定の書式設定 "ハイパーテキストリンク"、フォントサイズなどは、私のウェブサイトに反映された後、少し汚れています。
どうすればこの問題を解決できますか。理想的には、フォームを保存すると、コピー/貼り付けを許可しない代わりに許可されていないすべてのHTMLコードを取り除くことが理想的です。これは可能ですか?サニタイズを使用すべきかどうか疑問に思っていましたが、どうすればよいでしょうか? (申し訳ありませんがコードに新しい、私はあなたが理解しただろうと思います)。
もう一つの文字列に
Please e-mail me at [email protected]
より詳細な情報を返し、次のことができ返しますHTMLマークアップをデータベースに格納する表示される前に表示されるようにしてください。そうすれば、将来的には、あなたが選択すれば、HTMLテキストでもっと何かをすることができます。書式を保存する前に投げ捨てると、消えてしまいます。 – Fred
迅速な返信とリンクをありがとう。私はRuby 2.2.1を使用しています。投稿する前に私がすでに墨塗り文書を読んでいると言っていたはずです。したがって、オプション2を選択した場合(保存する前にフォーマットを取り除く)、どうすればいいですか? フォームフィールドを組み合わせて一緒にサニタイズする方法はありますか? – user6877257
最も簡単な方法は、データベースに保存する前にtext_fieldをmodel属性に割り当てるときに、モデル内の文字列をサニタイズすることです。未完成のテキストが正しく整形されたHTMLでない場合、あなたは何をするでしょうか?)注意深く考えずに、form_fieldを実際に処理することはできません。あなたは、text_fieldがフォーカスを失ってHTMLを取り除くときにいくつかのjavascriptを実行することができますが、結果をtext_fieldに戻すと、ユーザに混乱するかもしれません。実装方法を選択する前に、何をしたいかを正確に定義する必要があります。 – Fred