Ruby on Rails使用jQuery的escape_javascript

pin*_*ngu 5 javascript ruby-on-rails railscasts

我一直在看这个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();
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么escape_javascript用于渲染部分,并显示闪光通知,但不是复数函数?

谢谢

Jes*_*ott 4

pluralize(@review.product.reviews.count, 'Review') 只有几个可能的输出

0 Reviews
1 Review
n Reviews
Run Code Online (Sandbox Code Playgroud)

任何输出都不需要转义,因此作者选择不这样做。

转义 javascript 将更改为<div id="yo">You're Awesome</div>不会导致 javascript 解释器认为引号结束字符串变量的文本。

如果您要输入

var awesome = "<div id="yo">You're Awesome</div>";
Run Code Online (Sandbox Code Playgroud)

它会爆炸。引号需要“转义”为

&lt;div id=\&quot;yo\&quot;&gt;You\'re Awesome&lt;\/div&gt;
Run Code Online (Sandbox Code Playgroud)