私のアプリケーションでは、潜在的に危険な注釈をユーザーに入力させました。私は私の見解でそれらをレンダリングするときは、次のようにきれいに注釈を示していますコントローラからJavascriptにHTMLを渡す適切な方法は何ですか?
<%= simple_format h annotation.body %>
これは、改行を維持するだけでなく、適切にHTMLをエスケープします。今、私はJavascriptで作成されたオーバーレイでこのボディをレンダリングする必要があります。うもちろん
$.getJSON(this.annotations_url, function(data) {
$.each(data, function(key, val) {
annotation = val;
this.div_body.html(annotation.body);
// ...
、結果のHTML:
def index
# ...
respond_to do |format|
format.json { render :json => @annotations }
end
end
そして、この(非常に単純化した例)のようなオーバーレイを作成:今、私は、コントローラから、次を呼び出すことにより、JSONを通じて私の注釈をフェッチではなくを適切にエスケープし、改行も保存しません。今
私は多くのことを、乾燥されないように、私はそのようにした場合、それは感じているので、私はエスケープと改行変換を行うために、純粋なJavascriptを使用してのように感じることはありません。コード全体を維持管理するのは難しいようです。
コントローラーから安全なHTML本体を何とかJSON経由で送信できませんか? ERB simple_format
とh
のメソッドは、ビューでのみ使用できるように見えます。
本当にJavascriptですべてを行う必要がありますか?
これはかなりうまくいきました。コードをレンダリングする前に 'format.json'ブロックに追加しました。それは今コントローラーに入っていますが、JSでやっているよりも優れています。 – slhck