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

stardiviner · September 30, 2015 · Last by flingfox63 replied at September 30, 2015 · 1611 hits

文件中的代码如下:

$('#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
You need to Sign in before reply, if you don't have an account, please Sign up first.