簡體   English   中英

Ruby on Rails escape_javascript與jQuery的用法

[英]Ruby on Rails escape_javascript usage with jQuery

我一直在看這個Railscast ,特別是這些代碼行。

// views/reviews/create.js.erb
$("#new_review").before('<div id="flash_notice"><%= escape_javascript(flash.delete(:notice)) %></div>');
$("#reviews_count").html("<%= pluralize(@review.product.reviews.count, 'Review') %>");
$("#reviews").append("<%= escape_javascript(render(:partial => @review)) %>");
$("#new_review")[0].reset();

有人可以解釋為什么使用了escape_javascript來渲染部分內容和顯示Flash通知,而不是使用復數功能嗎?

謝謝

復數形式只有幾個可能的輸出(@ review.product.reviews.count,'Review')

0 Reviews
1 Review
n Reviews

不需要輸出任何輸出,因此作者選擇不這樣做。

轉義javascript會將<div id="yo">You're Awesome</div>更改為文本,該文本不會導致javascript解釋器認為引號結尾處的字符串變量。

如果您輸入

var awesome = "<div id="yo">You're Awesome</div>";

它會炸毀。 引號需要“轉義”為

&lt;div id=\&quot;yo\&quot;&gt;You\'re Awesome&lt;\/div&gt;

您正在將原始JavaScript響應發送回瀏覽器,這是jQuery.ajax({type:“ script”})命令所期望的。

為了用來自AJAX響應的HTML替換頁面中的HTML,需要對其進行轉義,以便可以將其作為javascript發送; 因此使用了escape_javascript。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM