新手问题 [解决] 文件 create.js.erb 是怎么解析代码的?

stardiviner · 2015年09月30日 · 最后由 flingfox63 回复于 2015年09月30日 · 1616 次阅读

文件中的代码如下:

$('#comments').append("<%= escape_javascript(render(@comment)) %>"); 
$('#new_comment')[0].reset();

正常的话,是先 erb 展开代码,转成 js,就像 html.erb 那样。但是这里的 ("<%= escape_javascript(render(@comment)) %>")我就不明白了。这 escape_javascript 是啥意思啊?

<%= escape_javascript(render(@comment)) %>这块就是 ERB 处理的内容,查 Rails API 这个方法用法就好了...

# File actionview/lib/action_view/helpers/javascript_helper.rb, line 25
def escape_javascript(javascript)
  if javascript
    result = javascript.gsub(/(\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) {|match| JS_ESCAPE_MAP[match] }
    javascript.html_safe? ? result.html_safe : result
  else
    ''
  end
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号