私のアプリケーションでは、安全ではない可能性がある注釈をユーザーに入力させています。ビューでそれらをレンダリングすると、次のように注釈がうまく表示されます。
<%= simple_format h annotation.body %>
改行を保持しますが、HTML も適切にエスケープします。次に、Javascript で作成されたオーバーレイでこのボディをレンダリングする必要があります。現在、コントローラーから次のように呼び出して、JSON を介して注釈を取得しています。
def index
# ...
respond_to do |format|
format.json { render :json => @annotations }
end
end
そして、次のようなオーバーレイを作成します (非常に単純化された例):
$.getJSON(this.annotations_url, function(data) {
$.each(data, function(key, val) {
annotation = val;
this.div_body.html(annotation.body);
// ...
もちろん、結果の HTML は適切にエスケープされず、改行も保持されません。
今では、純粋な Javascript を使用してエスケープと改行の変換を行う気はありません。そうすると、あまり DRY を実行しないように感じるからです。保守が難しく、コード全体が雑然としています。
JSON を介してコントローラーから安全な HTML 本文を送信することはできませんか? ERBsimple_format
とh
メソッドはビューでのみ使用できるように見えます。
それとも、本当にJavascriptですべてを行うべきですか?