Rails 如何在 erb.html 文件输出 #{} 这个三个连续的特殊字符串

bugguardian · 2016年03月31日 · 最后由 jicheng1014 回复于 2016年04月04日 · 2086 次阅读

因为特殊需求,需要输出的文本里面有 #{xxx} 这类字符串形式,估计是与 rails 本身这类变量引用定义形式有冲突,总是无法正确解析显示出来,是否有办法?

加个转意字符

\#{aa} 

#1 楼 @adamshen 有试过的,不行的

我用 pry 试了下可以,你的代码能贴一下吗?

[1] pry(main)> puts "\#{xxx}"
#{xxx}
=> nil
[2] pry(main)> 

[1] pry(main)> require 'erb'
=> true
[2] pry(main)> ERB.new("\#{xxx}").run
#{xxx}=> nil
[3] pry(main)> 

#3 楼 @adamshen 实在不好意思,这几天有事,刚有空上来,你加转意字符的方法是对的,是我忽略了代码中有个地方加了 escape_javascript,进行了二次转译。本来也没关系,但关键是,我 escape_javascript 外面还套了个双引号,这时问题就来了,二次转译后,第一次加的转译符全部失效,然后“#{}”仍按 ruby code 方式处理了,解决方法,双引号改成单引号,真是不良习惯害死人。

推荐 rubocop,会建议所有字符串如果没转义用单引号 效果不错

需要 登录 后方可回复, 如果你还没有账号请 注册新账号