在我的應用程序中,我讓用戶輸入可能不安全的註釋。當我在我看來使它們,下面顯示了很好的註解:將HTML從控制器傳遞給Javascript的正確方法是什麼?
<%= 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做轉義和換行轉換,因爲它的感覺就像我不會幹燥很多,如果我這樣做了。看起來很難維護和混亂整個代碼。
無法以某種方式通過JSON從控制器發送安全的HTML正文?看起來好像ERB simple_format
和h
方法僅在視圖中可用。
或者我應該真的在JavaScript中做所有事情?
這工作得很好,我只是在渲染之前將代碼添加到'format.json'塊中。它現在在控制器中,但仍然比在JS中做得更好。 – slhck