Ruby on rails 在erb模板中嵌入ejs模板

Ruby on rails 在erb模板中嵌入ejs模板,ruby-on-rails,erb,ejs,Ruby On Rails,Erb,Ejs,我正在构建一个javascript重量级rails 3应用程序。它使用下划线.js,它在ejs()之上构建了一个非常优雅的模板机制 问题:embeddedjs大量借用了erb语法,因此在erb模板中包含ejs模板会导致视图呈现问题 是否有办法在erb文件中包含“非erb”部分?这将允许我在erb文件中定义ejs模板。现在我正在使用一个hack,我有一个助手,它读取包含ejs模板的文件的原始内容,并将其作为原始字符串输出到erb模板中 我用这个技巧来解决这个问题: // Using custom

我正在构建一个javascript重量级rails 3应用程序。它使用下划线.js,它在ejs()之上构建了一个非常优雅的模板机制

问题:embeddedjs大量借用了erb语法,因此在erb模板中包含ejs模板会导致视图呈现问题


是否有办法在erb文件中包含“非erb”部分?这将允许我在erb文件中定义ejs模板。现在我正在使用一个hack,我有一个助手,它读取包含ejs模板的文件的原始内容,并将其作为原始字符串输出到erb模板中

我用这个技巧来解决这个问题:

// Using custom tags to be able to use regular for templates in templates
var ejs = require('ejs');
ejs.open = '{{';
ejs.close = '}}';

// Using html extension for custom ejs tags
app.register('.html', ejs);

app.set('views', __dirname + '/views');
app.set('view engine', 'html');
这将更改为{{},并让我使用JS使用的模板。这对我很有用,因为我没有经典样式模板()


如果您有很多这样的模板,您可能希望执行相同的技巧,但对于underline.js模板除外。

您可以将ejs保存为一个单独的文件,然后在脚本标记内将其呈现为文本(不会计算为erb)

在雇员再培训局内部:

<script id="my_awesome_template" type="text/x-ejs">
  <%= render :text => File.open("app/views/controller_name/_my_awesome_template.html.ejs").read %>
</script>`

转义下划线变量:(您不希望erb插入的变量)

变成:

在haml中,使用
:普通的
过滤器很容易。这正是我想要的,但我不确定如何将其绑定到Rails。(我没有使用下划线,只使用EJS和JST。)刚刚找到了问题的解决方案—在初始值设定项中将EJS.evaluation\u模式分配给/\{([\s]+?)\}/并将EJS.interpolation\u模式分配给/\{=([\s]+?)\}/。
new EJS({element: document.getElementById('my_awesome_template')}).render(data)
<%= foo %> becomes:

<%%= foo %>