我们在 Rails (3.0.3 / 1.9) 上使用 Jammit 进行静态压缩以及它提供的所有其他前端好东西。我正在尝试使用 Javscript 模板来替换一些丑陋的前端代码,但看起来默认的 JST 编译器无法处理 Windows 换行符:
assets.yml 文件:
embed_assets: on
javascripts:
plugins:
- app/views/**/*.jst
当我将 _topicPreview.jst 全部放在一行上时,它编译得很好:
<div class='TopicPreview <%= typeName %>'><div class='Title'> <%= summary %> </div><div class='Meta'> <span class='LastUpdate'> <%= updatedAt %> </span> <span class='PostCount'> | <%= postsCount %> Posts | </span> <span class='LikeCount'> <%= likesCount %> Likes </span> </div></div>
页面加载,我有可用的 JST._topicPreview([JSON version of topic]) 方法。美丽的。
JST 的一半吸引力在于可读性/可维护性,所以我希望我的 JST 有正确的格式。一旦我在 JST 文件中添加换行符,页面就会Uncaught SyntaxError: Unexpected Token ILLEGAL
抛出window.JST['_topicPreview'] = template('...[the escaped JST file]...')
在代码跟踪中,我可以看到它解析和转义单引号,所以我很惊讶它无法处理换行符。
有没有其他人遇到过这个问题?有没有比将一些额外的字符串替换到模板生成代码中更干净的解决方法?
Meta:我对 javascript 模板还很陌生,但是它们应该有自己的 StackOverflow 标签吗?
编辑
看起来这是一个已知问题,有待合并到 gem 中的未决修复。